您的位置:首页 > 产品设计 > UI/UE

结束while(cin >> value)

2016-01-19 16:09 393 查看
当看《c++ primer》这本书的时候有这样一段示例代码

#include <iostream>
int main(){
int val,sum=0;
while(std::cin>>val){
sum+=val;
}
std::cout<<"the result is "<<sum<<std::endl;
return 0;
}


当自己在终端调试的时候输入数字并多次回车始终无法结束while循环,看到后来才明白了原因。

原因 1

what is cin

cin是istream类型的对象,这个对象也被称为标准输入。

what is >>

>>为输入运算符

左侧参数:istream对象

右侧参数:任意对象

返回值:返回istream对象

作用:它从给定的istream读入数据,并存入给定的对象中

分析std::cin >> value

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

当我们使用一个istream对象作为条件时,其效果是检测流的状态。如果流是有效的,即流未遇到错误,那么检测成功。当遇到文件结束符,或遇到一个无效输入时,istream对象的状态会变成无效。处于无效的istream对象为使条件为假。因此,while循环一直会执行,直到遇到文件结束符或者错误。

小提示:windows下的输入文件结束符为Ctrl+Z,Unix和Linux下一般是Ctrl+D

执行效果

本人测试环境为linux

当输入数字后按Ctrl+Z时,效果图如下:



当输入数字后故意输错时回车,效果图如下:



《c++ primer 》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: