我有以下程序:
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 ......等等
有人可以解释为什么/如何发生这种情况?
答案 0 :(得分:3)
cin需要刷新......
基本上你没有读过&#34; b&#34;作为数字,你在循环中以相同的条件回来。
但最佳做法应该是读取字符串然后从字符串
解析答案 1 :(得分:1)
参见这篇文章:
如果用户输入了无法解释为整数的其他内容,上面的示例会发生什么?那么,在这种情况下,提取操作失败。默认情况下,这可以让程序继续运行,而无需为变量i设置值
要阻止这种情况发生,你应该检查收到的输入是否实际上是一个整数。
如上所述,也许尝试使用stringstream之类的东西,然后解析字符串。