C++学习研究之一— —输入输出

cout 是在标准库中定义的输出流对象,‘<<’是重定向符。

endl是叫操纵符,其实是个模板函数,在输出流中写入换行符,并且刷新输出缓存,而‘\n‘只是往输出流中写入了换行符,没有刷新输出缓存,在输出到屏幕时,没有明显的区别,但是如果写入到文件时,‘\n‘只是把内容写道了缓存中,并没有写入到磁盘,而endl则把内容写入到了磁盘。

如果两个加引号的字符数组中间没有除空格和注释以外的字符,预处理器会自动把两个字符数组连接起来,并成一个字符数组。因为预处理器会去掉空行、空格、和注释,所以两个字符数组中有这几种字符是没有关系,仍然可以链接。

c++中的强制转换比c更加直观,看起来像调用函数,然后传个参数。如C++中用char(17),而C语言中要这样写:char(17).

输入操纵符可以读入参数类型相同的输入,如果类型不一样,并没有什么出错处理,但是会从输入中从头截取相同类型的输入,比如输入123abc,会得到123.

1.  C++保留C的输入输出单个字符的函数

putchar(c)  —— 字符输出

getchar()  ——字符输入函数

2. scanf()、printf()函数的输入和输出 

scanf(格式控制,输出表列);

printf(格式控制,输出表列);

3. 标准输入输出流cin、cout

包括头文件#include<iostream>

输入输出流的控制符要加入头文件 #include<iomanip>

cout<<"dec:"<<dec<<a<<endl;    //以十进制的形式输出整数 oct/hex

cout.put(97);  //显示a字符--使用cout的成员函数put(c)



  cin成员函数get()

  (1)  不带参数的

   char c=cin.get();  //用cin的成员函数get()从键盘读入一个字符到c中去

  (2)  带一个参数的

  cin.get(ch); //从输入的流中接受一个字符,并赋给字符变量ch

  (3) 带三个参数的

  cin.get(字符数组,字符的个数n,终止字符)

 例程:

 1 #include <iostream>
 2 using namespace std;
 3
 4 int main()
 5 {
 6     char ch[20];
 7     cout<<"input a string:"<<endl;
 8     cin.get(ch,10,‘/n‘);  /*取得输入流的前10-1=9个字符赋值给ch数组的前9个元素,并规定换行符为为输入流的终止结束符*/
 9      cout<<ch<<endl;
10     return 0;
11 }

  如输入:1 2 34567890   //按换行键终止流输入

  则输出:1 2 34567         //只读得前9个送入ch数组中

  cin的成员函数getline()  ——从输入流中读入一行字符

  cin.getline(字符数组(或字符指针),字符的个数n,终止字符)

例程:

 1 #include <iostream>
 2 using namespace std;
 3
 4 int main()
 5 {
 6     char ch[20];
 7     cout << "input a string:";
 8     cin >> ch;
 9     cout << ch << endl;
10     for(int i = 0; i < 20; ++i)
11     {
12         cout << i << ":" << ch[i] << ‘ ‘;
13     }
14     cin.getline(ch, 20, ‘/‘);    //读取19个字符到ch数组或遇到‘/‘结束
15     cout << ch << endl;
16     for(int i = 0; i < 20; ++i)
17     {
18         cout << i << ":" << ch[i] << ‘ ‘;
19     }
20     cin.getline(ch, 20);    //读取19个字符到ch数组或遇到‘/n‘结束,遇到‘/‘仍作为字符读入
21     cout << ch << endl;
22     for(int i = 0; i < 20; ++i)
23     {
24         cout << i << ":" << ch[i] << ‘ ‘;
25     }
26     return 0;
27 }

   cin的成员函数eof()  —— 在输入流中读取数据,如果到达末尾(遇到文件结束符),则eof()返回真,否则为假.

例程:

 1 #include<iostream>
 2 using namespace std;
 3
 4 int main()
 5 {
 6     char c;
 7     while(!cin.eof())           //若未遇到文件结束符
 8         if((c=cin.get()) != ‘ ‘)  //检查读入的字符是否为空格字符
 9             cout.put(c);
10     return 0;
11 }


C++学习研究之一— —输入输出

时间: 2024-10-12 09:52:45

C++学习研究之一— —输入输出的相关文章

C++的开源跨平台日志库glog学习研究(一)

作为C++领域中为数不多的好用.高效的.跨平台的日志工具,Google的开源日志库glog也算是凤毛麟角了.glog 是一个C++实现的应用级日志记录框架,提供了C++风格的流操作. 恰巧趁着五一我也学习研究了这个glog库,写个总结如下.走过路过的的各位牛人.高手可以忽略这篇文章了. 从code.google.com下载源码(在这里),在Visual Studio 2010中打开工程,如下: 可见只有四个工程,其中libglog和libglog_static分别是Windows下的动态库和静态

C++的开源跨平台日志库glog学习研究(二)--宏的使用

上一篇从整个工程上简单分析了glog,请看C++的开源跨平台日志库glog学习研究(一),这一篇对glog的实现代码入手,比如在其源码中以宏的使用最为广泛,接下来就先对各种宏的使用做一简单分析. 1. 日志输出宏 这里我们以一条最简单的日至输出为例说明: LOG(WARNING) << "This is a warning message"; 这里LOG是一个宏,其定义如下(logging.h line 487): #define LOG(severity) COMPACT

C++的开源跨平台日志库glog学习研究(三)--杂项

在前面对glog分别做了两次学习,请看C++的开源跨平台日志库glog学习研究(一).C++的开源跨平台日志库glog学习研究(二)--宏的使用,这篇再做个扫尾工作,算是基本完成了. 编译期断言 动态断言在调试过程中是一个很重要的手段,而且我们使用的也比较多.相应的,静态断言,也即是编译期断言随着模板编程.元编程的发展,也表现出了动态断言所没有的优势:在编译期完成断言检查,而不是等到运行时! 比如在glog的源码中,有如下代码(logging.h line 908): 1 template <b

面向医学图像分析的深度学习研究方案

面向医学图像分析的深度学习研究方案 这是一篇有关"深度学习在医学图像处理方面"的研究报告的第一节,主要包含研究对象,常用方法,深度学习简介,研究现状,研究重点. 在撰写报告时,我找到了两篇 Deep learning for BioInformation / BioMedicine 的综述文章,也一并分享出来: Deep Learning in Bioinformatic Applications of deep learning in biomedicine 1. 研究背景及意义 医

libevent源码学习研究(libevent-0.1)

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">想学习研究libevent怎么设计的,学习它的思想,学习它的设计,奈何自己实力不够啊,于是另辟奇径,从最早的版本开始,一个版本一个版本的学习,不信吃不透它.</span> struct event { TAILQ_ENTRY (event) ev_read_next; TAI

了解点OpenAI及深度学习研究前沿

前言 OpenAI是2015年底刚成立的人工智能公司,由Elon Musk领投,号称有10亿美金的投资额,由几位人工智能的顶尖好手组成.这基本上意味着一个新的DeepMind公司诞生,只不过这次OpenAI是一个组织,不属于任何一个公司. 为什么要了解OpenAI? 因为OpenAI的研究内容很大程度上代表着人工智能的研究方向,由于其非盈利性质以及地处加州硅谷这种黄金地段,未来聚集更多顶尖人才的可能性很大,成为一个和DeepMind公司抗衡的可能性非常大.OpenAI的出现将使顶级人工智能的研究

Android瀑布流StaggeredGridView学习研究

关于Android瀑布流控件,已经在江湖上,流传已久,超过两年时间了.网上也有很多相关学习资源,可以拿来研究学习.github上,就有两个资源,可以供学习者膜拜. 1.https://github.com/maurycyw/StaggeredGridView    此链接有图片加载功能,但功能相对简单些. 2.https://github.com/etsy/AndroidStaggeredGrid  提供的瀑布流功能强大,可以自定义瀑布流列数. 本篇博客,就讲解etsy的源码为主了.首先看效果图

关于sencha touch 的JSONP跨域请求的学习研究

此篇文章是对自己在研究学习sencha touch的过程中的点滴记录,主要是JSONP的跨域请求这方面,对于何为是跨域概念还有不熟悉的,可以自己问下度娘. 先上张图: 我要完成的功能就是表格下拉刷新,并发送请求到我自己写的服务程序端,由于服务程序和此SENCHA的程序不再一个域下,总是出现请求出错(提示的大概信息就是跨域的问题).这两天真是被这个问题折磨的很久,由于没接触过sencha touch 的JSONP,开始也是一头雾水,也看了好多的资料.最终理解了SENCHA里的jsonp的请求模式.

AndroidPN的学习研究(一)环境建立

AndroidPN环境 AndroidPN实现了从服务器到android移动平台的文本消息推送.这里先简单说一下androidPN的安装过程. 下载androidpn.zip解压文件 网址:---------待审核---------- 解压两个包,Eclipse导入client,配置好目标平台,打开raw/androidpn.properties文件, apiKey=1234567890 xmppHost=10.0.2.2 xmppPort=5222 如果是模拟器来运行客户端程序,把xmppHo