注册 登录
编程论坛 VC++/MFC

请教一个读入未知数目的输入求和问题

baoyewei99 发布于 2011-05-20 19:56, 532 次点击
#include <iostream>
int main()
{
    int sum=0,value;

    while(std::cin>>value)
        sum+=value;

    std::cout<<"Sum is : "<<sum<<std::endl;
    return 0;
}


这是c++ Primer 第四版上面的一个例子,在第15页
程序输入:3 4 5 6
输出:sum is 18
再加一句,如果是输入:3 4 5 6 a  
就可以得到Sum=18
a可以是任意字母

不清楚为什么输入任意字母就可以跳出循环,请大家知道一下。


我在VC中运行输入后,没有输出结果。请大家指导一下,谢谢.
再请教一下   正确的程序代码?  谢谢!
4 回复
#2
Toomj2011-05-20 20:24
while(cin>>a)
将会一直测试输入流是否正常,如果输入流正常,就会继续循环,如果输入流错误,或者达到文件末尾(在windows下Ctrl+Z,在Linux下Ctrl+D),循环就会终止。

楼主的代码中输入字母(如a)就属于输入流错误,循环结束,输出结果
#3
celeli2011-05-21 09:02
std::cin>>value;把这句话放出来试试,写在while语句的前面如下:
std::cin>>value;
while(value){}
#4
NEWOOD2012-03-24 15:39
回复 2楼 Toomj
好好哈,多谢啦 ! 不过怎么在没有错误的输入流下就可以 像书本那样正常输出呢 ???
#5
NEWOOD2012-05-01 19:17
回复 楼主 baoyewei99
好好,不过window下,用VC ,用 ctrl + d  终止的 !
1