c++的一个问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 17:56:14
初学c++,看的是著名的c++primer.里面有例子无法运行,如下
#include <iostream>
int main()
{
int sum=0,value;
while(std::cin>>value)
sum+=value;
std::cout<<"sum is: "<<sum<<std::endl;
return 0;
}
书上说,如果给出输入
3 4 5 6 (中间是空格)
那么输出是
num is: 8

然而结果并非如此,回车是没反应的.但如果输入
3 4 5 6,
然后回车的话,就可以得出结果.
请问什么缘故?
教材有错吗?

把回车换成ctrl + z或者ctrl + x

问题在意while循环的条件,
当输入的数据不能通过显示或者隐式转换为整型时,
std::cin>>value的返回值才会为0,这样才会停止while循环,
才能开始输出.
也就是说,
需要输入字母标点符号等非数字字符时,
该循环才能停止.

其实并不是书上错了,
书上只是说名数据的输入和输出,
...