我正在处理以下代码。输入流失败后对输入变量的影响
#include <iostream>
int main()
{
std::cout << "Enter numbers separated by whitespace (use -1 to quit): ";
int i = 0;
while (i != -1) {
std::cin >> i;
std::cout << "You entered " << i << '\n';
}
}
我知道使用while (std::cin >> i)
会更好,但我不明白具体发生。 如果我提供了一个无效的输入,则循环变得无限,因为输入流进入失败位状态。我的问题是输入变量i
发生了什么?在我的情况下,无论先前输入的值如何,它都变为0。为什么在输入无效后变为0?这是预定义的行为吗?
如果输入失败,输入变量(即流的参数保持不变)。 –
@Koushik他们是?在我的情况下,它们变为0。这就是我的问题。它为什么会改变,为什么是0? – chosentorture
它不适合我,它总是显示我输入的最后一个数字。经MSVC2012测试。 – Borgleader