【发布时间】:2018-11-09 12:21:45
【问题描述】:
我正在使用 C++ Primer 一书学习 C++。
在第 1.4.3 节中,给出了以下关于读取未知数量输入的示例代码。
#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;
}
根据书上的说法,如果我们输入3 4 5 6,输出将是Sum is: 18
但是当我在我的计算机上尝试这个(Windows 10 with MinGW)时,代码并没有结束。即使我输入换行符,它也会继续要求输入。只有当我输入像f 这样的非整数输入时它才有效。
这是预期的吗?如果是,是否有任何代码在输入换行符后停止?
我对 c++ 很陌生,而且我已经学过 python,所以这么早被卡住是很令人沮丧的。
感谢和问候。
【问题讨论】:
-
在 Linux 下你会使用 EOF 字符
-
如果你想明确地读取一个行,你应该试试
std::getline()。 -
要么读取整行(通过
std::getline())要么使用程序参数 -
我的问题错了吗,如果不是,为什么我会投反对票?
标签: c++ algorithm while-loop c++14 user-input