案例:输入任意空格和数字,输出其中的数字之和。

  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6. int sum = ;
  7.  
  8. cout << "Please Input space or number:";
  9.  
  10. int i = ;
  11. while( cin >> i) {
  12. sum += i;
  13. while(cin.peek() == ' ') {
  14. cin.get();
  15. }
  16. if( cin.peek() == '\n') {
  17. break;
  18. }
  19. }
  20. cout << "The result is " << sum << endl;
  21. return ;
  22. }

目录

1. 标准输出流(cout)

2. 标准输入流(cin)

3. 输入流(cin)方法

1、cin

2、cin.get() —— 接收字符

3、cin.getline()

4、getline()

5、gets()

6、getchar()

4. 输出流(cout)格式控制



C++ 的 I/O 发生在流中,流是字节序列。

  • 标准输出流(cout)

    • 如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。
    • cout 是与流插入运算符 << 结合使用的
  • 标准输入流(cin)

    • 如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。
    • cin 是与流提取运算符 >> 结合使用的

        

                    图1 流的输入和输出

1. 标准输出流(cout)

cout  <<  表达式1  <<  表达式2  <<……<<  表达式n;

cout << "This is "  //注意行末尾无分号
<< "a C++ "
<< "program."
<< endl; //语句最后有分号

cout << "This is "; //语句末尾有分号
cout  << "a C++ ";
cout  << "program.";
cout << endl;

注意 : 不能用一个插入运算符“<<”插入多个输出项,如:
    cout<<a,b,c; //错误,不能一次插入多项

2. 标准输入流(cin)

从键盘输入三个数,赋值给a, b, c, 有以下三种方法:

cin >> 表达式1 >> 表达式2 >> 表达式3 >> 表达式4;

cin >> a //注意行末尾无分号
   >> b //这样写可能看起来清晰些
   >> c
   >> d;

cin >> a;
   cin >> b;
   cin >> c;
   cin >> d;

. 输入流(cin)方法

1、cin

  • 用法1:最基本,也是最常用的用法,输入一个数字:
  • 用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束
  1. #include <iostream>
  2. using namespace std;
  3. main ()
  4. {
  5. char a[20];
  6. cin>>a;
  7. cout<<a<<endl;
  8. }
  9. //   输入:jkljkl jkljkl       //遇空格结束
  10. //   输出:jkljkl

2、cin.get() —— 接收字符

用法1: cin.get(字符变量名)

  1. #include <iostream>
  2. using namespace std;
  3. main ()
  4. {
  5. char ch;
  6. ch=cin.get(); //或者cin.get(ch);
  7. cout<<ch<<endl;
  8. }
  9.  
  10. // 输入:jljkljkl
  11. // 输出:j

用法2: cin.get(字符数组名, 接收字符数目) 

  1. #include <iostream>
  2. using namespace std;
  3. int main ()
  4. {
  5. char a[]; // 字符串可以保存19位,最后一位是0
  6. cin.get(a,); // 取其中的前17位
  7. cout<<a<<endl;
  8. }
  9.  
  10. // 输入:jkl jkl jkl
  11. // 输出:jkl jkl jkl
  12.  
  13. // 输入:ythrdhtgiludfgvkhlfgxdzfxcgvhkjfxdxcvjhkhgbx
  14. // 输出:ythrdhtgiludfgvkh (接收17个字符+1个'\0')

3、cin.getline()

cin.getline(字符串,接受数目,结束字符串)   —— 接受一个字符串,可以接收空格

  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4.  
  5. int main ()
  6. {
  7. char m[][];
  8. for(int i=;i<;i++)
  9. {
  10. cout<<"\n请输入第"<<i+<<"个字符串:"<<endl;
  11. cin.getline(m[i],, 'a');
  12. }
  13.  
  14. cout<<endl;
  15. for(int j=;j<;j++)
  16. cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;
  17.  
  18. }

  1. /* 运行结果
  2. 请输入第1个字符串:
  3. 111a
  4. 请输入第2个字符串:
  5. 222a
  6. 请输入第3个字符串:
  7. 333a
  8. 输出m[0]的值:111
  9. 输出m[1]的值:222
  10. 输出m[2]的值:333
  11. #####
  12. */

4、getline()

 和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,需声明 #include<string>

5、gets()

 类似cin.getline(),属于string流,

6、getchar()

getchar()是C语言的函数,C++也可以兼容,但是尽量不用或少用;

4. 输出流(cout)格式控制

ios::dec 以10进制表示整数
ios::hex 以16进制表示整数
ios::oct 以8进制表示整数
ios::showbase 为整数添加一个表示其进制的前缀
ios::internal 在符号位和数值的中间插入需要数量的填充字符以使串两端对齐
ios::left 在串的末尾插入填充字符以使串居左对齐
ios::right 在串的前面插入填充字符以使串居右对齐
ios::boolalpha 将bool类型的值以true或flase表示,而不是1或0
ios::fixed 将符点数按照普通定点格式处理(非科学计数法)
ios::scientific 将符点数按照科学计数法处理(带指数域)
ios::showpoint 在浮点数表示的小数中强制插入小数点(默认情况是浮点数表示的整数不显示小数点)
ios::showpos 强制在正数前添加+号
ios::skipws 忽略前导的空格(主要用于输入流,如cin)
ios::unitbuf 在插入(每次输出)操作后清空缓存
ios::uppercase 强制大写字母

C++学习之 —— 输入输出的更多相关文章

  1. C++学习43 输入输出有关的类和对象

    输入和输出是数据传送的过程,数据如流水一样从一处流向另一处.C++形象地将此过程称为流(Stream).C++的输入输出流是指由若干字节组成的宇节序列,这些宇节中的数据按顺序从一个对象传送到另一对象. ...

  2. Linux学习之输入输出重定向

    转自:http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html 多谢分享 在了解重定向之前,我们先来看看linux 的文件描述符. ...

  3. [深入学习C#]输入输出安全性——可变类型形參列表的变化安全性

    可变类型形參列表(variant-type-parameter-lists) 可变类型形參列表(variant-type-parameter-lists )仅仅能在接口和托付类型上出现.它与普通的ty ...

  4. Python学习之输入输出、数据类型

    #coding=utf-8 # 输入 print'100+200=',100+200 # 输入 # name = raw_input('tell me your name:') # print'hel ...

  5. MyBatis学习之输入输出类型

    1.  传递pojo对象 Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称,其中,#{}:占位符号,好处防止sql注入,${}:sql拼接符号, 简要说明 ...

  6. Shell基础学习(七) 输入输出重定向

    命令 说明 command>file 将输出重定向到file command<file 将输入重定向到file command >> file 将输出追加到file n > ...

  7. VASP学习笔记--输入输出文件

    一.VASP 全称Vienna Ab-initio Simulation Package,是维也纳大学Hafner小组开发的进行电子结构计算和量子力学-分子动力学模拟软件包. 它是目前材料模拟和计算物 ...

  8. Python学习之输入输出入门 A+B篇

    描述 求两个整数之和. 输入 输入数据只包括两个整数A和B. 输出 两个整数的和. 样例输入 1 2 样例输出  3 a=input().split() print(int(a[0])+int(a[1 ...

  9. paper 53 :深度学习(转载)

    转载来源:http://blog.csdn.net/fengbingchun/article/details/50087005 这篇文章主要是为了对深度学习(DeepLearning)有个初步了解,算 ...

  10. java 输入输出 io

    学习JAVA  输入输出篇 java不像C中拥有scanf这样功能强大的函数,大多是通过定义输入输出流对象.常用的类有BufferedReader,Scanner.实例程序:一,利用 Scanner ...

随机推荐

  1. 【VBA】数组定义时,括号内的数值n为最大下标,其长度为n+1

    定义数组 dim arr(9) as integer注意这是数组的长度为10,而9指的是最大下标值. 所以在redim和赋值的时候要特别小心,防止错位.

  2. vue三大框架

    vue 前端三大新框架: Angular.js------Google研发   缺点: 学习成本高.最早研发   严谨 React.js    facebook.com (脸书)自主研发  开源  j ...

  3. npm install Install error: Unexpected token < in JSON at position 35问题解决

    解决方案 rm package-lock.json worked.

  4. if __name__ == __'main'__: 判断讲解

    """王思聪作为消费者 要吃热狗生产者 负责做热狗问题:王思聪不清楚对方会生产多少热狗 """from multiprocessing im ...

  5. 编辑技巧之如何跟PDF文档添加贝茨编号

    除了office办公软件,pdf文档现在使用的频率也便多了,不论是工作或是学习,阅读都用阅读器打开就行了,可是如果想要修改.编辑那只用阅读器是无法进行编辑的,其实PDF文件的编辑还是很方便,使用PDF ...

  6. OrCAD Capture CIS 16.6 快速地编辑Part的引脚名称

    操作系统:Windows 10 x64 工具1:OrCAD Capture CIS 16.6-S062 (v16-6-112FF) 工具2:Excel 参考1:http://www.360doc.co ...

  7. OpenCV-Python入门教程6-Otsu阈值法

    在说Otsu之前,先说几个概念 灰度直方图:将数字图像中的所有像素,按照灰度值的大小,统计其出现的频率.其实就是每个值(0~255)的像素点个数统计. Otsu算法假设这副图片由前景色和背景色组成,通 ...

  8. lsattr chattr 文件安全设置

    [root@test_android_client_download xianlaigames]# lsattr -------------e- ./jilinmj.apk[root@test_and ...

  9. jdk1.8学习、jdk1.9学习、jdk10.0学习和总结

    由于中文参考资料很少,参考链接: https://www.oschina.net/translate/109-new-features-in-jdk-10 http://chuansong.me/n/ ...

  10. JDK1.8 JVM参数配置

    JAVA_OPTS=" -server #服务器模式 -Xmx4g #JVM最大允许分配的堆内存,按需分配 -Xms4g #JVM初始分配的堆内存,一般和Xmx配置成一样以避免每次gc后JV ...