1.读取数据量不定的输入数据

e.g.

#include <iostream>

using namespace std;

void main()
{ int sum=,val=; while(cin>>val)//读取数据直到遇到文件尾;
{
sum+=val;
}
cout<<sum<<endl; system("pause");
}

输入 3 4 5 6

Ctrl+Z  (Windows系统输入文件结束符)

输出:

while循环条件的求值就是执行:

cin>>value

此表达式从标准输入读取下一个数,保存在value中。输入运算符>>返回其左侧运算对象,本例中是cin。因为,循环条件实际上检测的是cin。

当使用一个istream类对象作为条件时,其效果是检测流的状态。

如果流是有效的,即未遇到错误,那么检测成功。当遇到文件结束符,或遇到一个无效输入时(上例中假设读入的值不是一个整数),istream类对象的状态会变为无效。无效的istream类对象使条件表达式为假。

因此,while循环会一直执行直至遇到文件结束符(或输入错误)。循环体内将当前值加到sum上。

Tip:从键盘输入文件结束符

当从键盘向程序输入数据时,对于如何指出文件结束,不同操作系统有不同的约定。
Windows系统中,输入文件结束符的方法是敲Ctrl+Z,然后按EnterReturn健。
Unix系统中,包括Mac OS X 系统中,文件结束符输入是用Ctrl+D

2.使用getline读取一整行

getline函数的参数是一个输入流和一个string对象,函数从给定的输入流中读入内容,直到遇到换行符为止(注意换行符也被读进来了),然后把所读的内容存入到那个string对象中去(注意不存换行符)。

getline只要一遇到换行符就结束读取操作并返回结果,哪怕一开始输入的就是换行符,此时所得结果是个空string。

和输入运算符一样,getline也会返回它的流参数。因此getline的结果也可以作为判断条件。

e.g.

void main()
{
string line;
while(getline(cin,line))//每次读入一整行(包括空格),直至到达文件末尾;
{
cout<<"输出:"<<line<<endl;
}
cout<<endl;
}

输入输出如下:

PS:如果需要一次读入多行数据分别处理,可以使用多个getline函数。

e.g.

void main()
{
string s1;
string s2;
string s3;
while(getline(cin,s1)&&getline(cin,s2)&&getline(cin,s3))//每次读入三行,直至到达文件末尾;
{
cout<<"s1-"<<s1<<endl;
cout<<"s2-"<<s2<<endl;
cout<<"s3-"<<s3<<endl;
}
cout<<endl;
}

输入输出如下:

参考:C++ primer

一些相关博文:

C/C++读入多行字符串string

再论C/C++的多行字串(带空格、回车)输入

C++如何输入多行字符串(含空格)

C/C++如何整行读入字符串?

PS:在赛码网刷题,形式和lintcode不太一样,需要自己输入数据,做文件包含,声明命名空间,写完整个main,刚开始碰到整个人都是懵比的。

最新文章

  1. Android中使用AsyncTask实现文件下载以及进度更新提示
  2. final发布评语
  3. .NET小细节
  4. 3D数学 ---- 矩阵和线性变换[转载]
  5. EntityFramework嵌套查询的五种方法
  6. leetcode database题目
  7. Oracle临时表(Temporary Table)
  8. l​i​n​u​x添加​修​改​用​户​名​密​码
  9. Bootstrap_表单_图像
  10. 2017&lt;java技术&gt;预备作业计科冀浩然
  11. 1789: [Ahoi2008]Necklace Y型项链
  12. sed的粉丝
  13. Linux文件格式化与相关处理及sed工具
  14. junit测试
  15. [Swift]LeetCode156.二叉树的上下颠倒 $ Binary Tree Upside Down
  16. 多个Gesture响应原理
  17. 错误代码 1045 Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password:YES)
  18. 【PyQt5-Qt Designer】PyQt5+eric6 安装和配置
  19. 动态 hover 使用变相使用
  20. VM虚拟机克隆_修改网络

热门文章

  1. ps快速将白底图片变为透明图片
  2. logback配置数据源日志error级别写入库
  3. 数据类中引用virtual
  4. 机器学习-线性回归算法(单变量)Linear Regression with One Variable
  5. Python版本OpenCV安装配置及简单实例
  6. Amazon AWS
  7. soj97 旅行
  8. 廖雪峰Java14Java操作XML和JSON-1XML-4第三方XML库
  9. RSA算法的基本原理
  10. thinkphp 自动完成