C ++:帮助解释简单程序的行为

时间:2014-03-04 04:32:10

标签: c++ cout cin

我有以下程序:

int a, b;
while (true)
{
    a = 0; b = 0;
    cout << "Enter input..." << endl;
    cin >> a >> b;
    cout << "You entered:" << endl;
    cout << a << endl << b << endl;
}

现在,当我提供时,程序按预期工作 预期的数字输入(即“10 20”)。 但是,如果我输入一些虚假输入,如“a b”, 程序进入无限循环w /以下输出:

输入输入... 你进来了: 0 0 输入输入... 你进来了: 0 0 ......等等

有人可以解释为什么/如何发生这种情况?

2 个答案:

答案 0 :(得分:3)

cin需要刷新......

基本上你没有读过&#34; b&#34;作为数字,你在循环中以相同的条件回来。

但最佳做法应该是读取字符串然后从字符串

解析

答案 1 :(得分:1)

参见这篇文章:

Basic Input/Output C++

  

如果用户输入了无法解释为整数的其他内容,上面的示例会发生什么?那么,在这种情况下,提取操作失败。默认情况下,这可以让程序继续运行,而无需为变量i设置值

要阻止这种情况发生,你应该检查收到的输入是否实际上是一个整数。

如上所述,也许尝试使用stringstream之类的东西,然后解析字符串。