注册 登录
编程论坛 C++教室

一个简单的c++程序,大家是怎么结束输入的?

为爱西行 发布于 2008-11-14 12:07, 7467 次点击
#include <iostream>
    int main()
    {
        int sum = 0, value;
        // read till end-of-file, calculating a running total of all values read
        while (std::cin >> value)
            sum += value; // equivalent to sum = sum + value
        std::cout << "Sum is: " << sum << std::endl;
        return 0;
     }

[[it] 本帖最后由 为爱西行 于 2008-11-14 12:15 编辑 [/it]]
23 回复
#2
scheelite2008-11-14 12:19
********************************************************************0
#3
heibai2008-11-14 12:28
(std::cin >> value)这儿当你输入0是不就结束循环了吗!
#4
为爱西行2008-11-14 12:49
回复 3# 的帖子
输入是随便输入多少整数的,中间用逗号等隔开的话只加到逗号之前的。
0之后还可以输入其他整数。
#5
newyj2008-11-14 13:39
lz 要搞清楚 while 判断的是什么 ?
这个时候 判断的是 cin 而不是 value的值
逗号 不是 int类型 这个时候 cin 为 fail() 就是 false
退出while
#6
heibai2008-11-14 15:07
回复 5# 的帖子
(std::cin >> value)这个表达式的值为true(非0)时执行循环,为(0)false时结束。如何让这个表达式为0,也就是cin输入一个非整形值时,它为0

它利用了cin的返回值,当输入回车或类型不匹配的值时,就会让while结束
#7
jymengxue2008-11-14 19:50
输入0也是不能结束的,不信你们试试看,我还不知道你这个程序实现的功能是什么啊?????,顶5楼的,输入不匹配的类型时,就会结束。。。。。while循环
#8
为爱西行2008-11-14 20:34
我知道输入非整型的value是就会结束循环,但这样结束不太别扭吗?
用空格或回车也不行。
#9
蜗牛人生2008-11-14 21:39
while的语法错误
你的程序本身有问题,关键是while的语法错误!
#10
为爱西行2008-11-14 22:06
回复 9# 的帖子
这是著作《C++ Primer 4rd》上的例子。我觉得作者的输入与实际不符合才拿来和大家讨论的。
#11
ronaldowsy2008-11-15 00:41
这是c++prime上面的一个题吧
#12
hanpengqd2008-11-15 19:35
输入个不是int型的数
#13
hhj2741597882008-11-16 14:43
跟帖问个问题:假如要输入回车的时候跳出循环,该怎么样实现?
#14
ntmdgbhwdmm2008-11-16 15:07
程序没错  crtl+z 就可以了
ctrl+z在windows系统相当于插入一个EOF(end of file)
在linux下是ctrl+d,视你的操作系统所定。
#15
Soul寂2008-11-16 21:37
/0   不就行了!
#16
heibai2008-11-17 12:37
这个程序是不怎么太好,我在VC中能正确编译,说明它没什么语法错误,可是你输入一个空格或者回车是无法结束的,只能输入字符类型,比如说一个‘a'.  也就是说他只要输入一个不是整形的类型时(符合一类型不匹配),当然你输入一个精度的数,它会自动截断,而且有时候求和会出现错误.所以我个人认为大家还是把它当成一个例子看,不要过多的深入了.
#17
为爱西行2008-11-17 16:36
回复 16# 的帖子
想的跟我一样,觉得结束的太突兀。
#18
蜗牛人生2008-11-17 22:24
回复 10# 的帖子
我又运行了一次,while判断得是value是否是int类型,如不是就会跳出,否则继续运行~!~!
#19
xdsdxl2008-11-25 19:48
Ctrl+Z
你试试!一般要打入一个空格之后,键入Ctrl+Z才有效。
#20
WorldOfGoo2008-11-26 16:56
#include <iostream>
#include <sstream>
using namespace std;
int main()
    {   string str;  
       do{
        int sum = 0;
        getline(cin,str);
        istringstream sin(str);
        for(int a;sin>>a;)
          sum+=a;
         cout<<sum<<endl;
        }while(1);
        system("pause");
        return 0;
     }
#21
WorldOfGoo2008-11-26 16:58
这样就可以完成不输入字符,而是回车表示终止,但有一定的局限性。。。。
#22
h130773959592008-11-26 18:59
while (std::cin >> value)
当出现cin.fail(),cin.bad(),cin.eof()三种情况时,会退出while 循环;
即:输入非value定义类型(文中为int型),或者到达文件结尾符时(ctrl+Z)退出。
#23
kedt52002008-11-27 13:19
文件结束符||非法输入
#24
tfg01162008-11-27 14:45
ctrl+z
1