C ++ std :: cout没有向控制台写任何东西

时间:2014-01-18 01:00:06

标签: c++

请原谅我的愚蠢,因为我刚开始学习C ++,但我遇到了令我困惑的事情。下面的代码是我按照C ++ Primer第5版PDF here找到的例子。

#include<iostream>
int main(){
    int sum = 0, value = 0;
    while (std::cin >> value)
        sum += value;
    std::cout << "Sum is: " << sum << std::endl; //this doesn't do anything
    std::cin.ignore().get();
    return 0;
}

现在由于某种原因,最后一个std::cout语句根本没有做任何事情,除了std::cin.ignore().get()之外,它让我感到困惑,这与pdf中的示例完全相同这没有任何作用。最让我困惑的是,如果我从while循环内部写value,你可以发现它不会无限重复;它会在最后一个输入值之后停止,因此错误不应该在while循环的执行中。

感谢任何帮助,谢谢!

编辑:我正在使用Visual Studio 2013 Ultimate

EDIT2:我正在使用的输入是3 4 5 6

EDIT3:为了比较,这里是C ++ Primer第5版的代码:

#include <iostream>
int main()
{
     int sum = 0, value = 0;
     // read until 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;
}

所以之间的区别是std::cin.ignore().get()

1 个答案:

答案 0 :(得分:5)

while (std::cin >> value)表示在读取整数失败之前它不会停止,即遇到EOF或非整数输入。

在Windows上,使用^ Z( Ctrl Z )输入EOF

尝试输入:

1 2 3 4
^Z

它应该击中cout线。这是关于cin.ignore()内容的完全不同的问题。