C++标准输入问题
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,然后按Enter或Return健。
在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
一些相关博文:
PS:在赛码网刷题,形式和lintcode不太一样,需要自己输入数据,做文件包含,声明命名空间,写完整个main,刚开始碰到整个人都是懵比的。
C++标准输入问题的更多相关文章
- 遇到shell重定向的一个奇怪问题:'消失'的标准输入!
需求: 把找到的文件逐行输出,然后用rm在许可的情况下删除 前置准备: $ls rm.sh test1 test2 test3 test4 test5 test6 $cat rm.sh #! / ...
- python调用外部子进程,通过管道实现异步标准输入和输出的交互
我们通常会遇到这样的需求:通过C++或其他较底层的语言实现了一个复杂的功能模块,需要搭建一个基于Web的Demo,方法查询数据.由于Python语言的强大和简洁,其用来搭建Demo非常合适,Flask ...
- C语言学习007:重定向标准输入和输出
先来完成一个将输入数据转换成json格式输出的小任务 #include <stdio.h> int main(){ float latitude; float longtitude; ]; ...
- 不可或缺 Windows Native (13) - C++: 标准输入, 标准输出, 字符串内存流
[源码下载] 不可或缺 Windows Native (13) - C++: 标准输入, 标准输出, 字符串内存流 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 标准输 ...
- IO流(三)__字节流 标准输入输出流 转换流
一.字节流:FileInputStream 和FileOutputStream 基本操作和字符流类相同,没有flush,但是close还是要的 复制一个字节流文件 private static voi ...
- 黑马程序员——JAVA基础之标准输入输出流
------- android培训.java培训.期待与您交流! ---------- 标准输入输出流: System中的基本字段,in,out 它们各代表了系统标准的输入和输出设备. 默认输入设备是 ...
- Linux shell的标准输入、输出和错误
编译文件时,若编译过程时间长,可以将 标准错误 重定向 输出到一个文件中 2 > 1.txt 也可以通过管道 重定向 到 标准输出 2 > &1 ...
- freopen()——重定向标准输入输出流
freopen()——重定向标准输入输出流 头文件:stdio.h 函数原型:FILE * freopen(const char *filename , const char *type , FIL ...
- shell 中的>文件重定向符 和 标准输入、输出、错误以及 2&1 的含义*
http://www.cnblogs.com/chenmh/p/5382044.html 问:其中 的2>&1是怎么回事? . test.sh > test.log 2>&a ...
- [Java] 使用转换流来处理标准输入
package test.stream; import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...
随机推荐
- 关于CTreeView中CTreeCtrl空间的使用
昨天QQ群里有人问我怎么实现CTreeCtrl的功能,说实话,我也是一个VC 的初级学者,没有弄过CTreeView的代码,参考了MSDN后,写了一小段代码,和大家一起分享,其中包括窗口切分,都是比较 ...
- springMVC 400 错误
1. 今天发现一个奇葩的问题, springMVC出现400错误, 查了很久发现是因为一个参数为int型,而前台传得是String. 这是bug么.
- VS2010-MFC(常用控件:列表视图控件List Control 上)
转自:http://www.jizhuomi.com/software/195.html 列表视图控件简介 列表视图控件List Control同样比较常见,它能够把任何字符串内容以列表的方 ...
- JS switch 分支语句
描述:根据一个变量的不同取值,来执行不同的代码. 语法结构: switch(变量) { case 值1: 代码1; break; case 值2: 代码2; break; case 值3: 代码3; ...
- Object 和Throwable
Object java.lang.Object 所有类的超类 Object里面有的方法所有的类都有 Object方法: String toString() 返回对象的字符串表现形式 类名 + @ + ...
- P1030 求先序排列 /// 二叉树的遍历
题目大意: 给一棵树的中序排列 后序排列,求这棵树的先序排列 https://www.luogu.org/problemnew/show/P1030 二叉树的四种遍历解说 几种遍历的递归实现 后序排列 ...
- 主页面与iframe页面之间的javascript函数的调用
1:在主页面里调用iframe页里面的javascript函数 <script type="text/javascript"> var childWindow = $( ...
- loj2212 方伯伯的OJ
题意: n<=1e8,m<=1e5. 标程: #include<cstdio> #include<algorithm> #include<cstring> ...
- AutoIt自动化编程(4)【转】
五.自动化操作轻松入门系列5 控件操作 然而,在真正实现自动化时仅靠上面的技术往往难以达到预期目的.下面开始进入最为重要的控件操作. 1.设置文本 在安装软件的过程中用户往往需要提供一些必需信息,比如 ...
- cycloneii LAB-wide signals
8 available LAB-width signals - 2 clocks - 2 clock enables - 2 asynchronous clears // - 1 asynchrono ...