C++输入问题
#include <iostream>
int main()
{
int sum=0,value;
while(std::cin>>value)
sum+=value;
std::cout<<"Sum is: "<<sum<<std::endl;
return 0 ;
}
这段程序,我们在输入的时候以什么结束我们的输入从而显示执行结果呢?
[解决办法]
>>返回值 是 cin 所以你这个输入什么都不可以退出循环的
[解决办法]
当输入流cin遇到以下3种情况将会被标记为false;
由于>> 运算符返回左操作数 即 cin本身的引用,因此while 表达式条件为false,退出循环
1.输入流严重故障:如硬件故障 cin将会被标记 istream::badbit
2.输入流错误,如应该读入int的确读到了char字符(非0-9)这样就不能产生int cin将会被标记istream::failbit
3.输入流遇到文件末尾,在文件输入流中即文件末尾,在标准输入流cin中,以输入独立的ctrl+D表示 cin将会被标记istream::eofbit
以上3中IO流的条件状态将会导致cin的值false,要还原请调用istream::clear()
参考<C++ Primer第四版>第8章 标准IO库