C++std::cout没有向控制台写入任何内容

C++ std::cout not writing anything to the console

本文关键字:控制台 任何内 cout C++std      更新时间:2023-10-16

请原谅我的愚蠢,因为我才刚刚开始学习C++,但我遇到了一些让我困惑的东西。下面的代码是我在这里找到的C++Primer第5版PDF中的示例。

#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

编辑2:我使用的输入是3 4 5 6

第3版:为了进行比较,以下是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;
}

因此,我的ONLY与此之间的差异是std::cin.ignore().get()

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

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

尝试输入:

1 2 3 4
^Z

它应该击中底线。关于cin.ignore()的东西,这是一个完全不同的问题。