我正在尝试设置一个输入检查循环,以便它不断向用户询问有效的(整数)输入,但是它似乎陷入了无限循环中。
我一直在寻找解决方案,并尝试使用ignore()
和clear()
,但是它仍然没有停止。
您能纠正我在这里错的地方吗?
int num;
cin >> num;
while (cin.fail()) {
cin.ignore();
cin.clear();
cout << "Enter valid number: " << endl;
cin >> num;
}
当流处于错误状态时,
cin.ignore();
什么也没做。您需要先致电,cin.clear()
然后再致电cin.ignore()
。
此外,cin.ignore()
将仅忽略一个字符。要忽略输入行,请使用:
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
添加
#include <limits>
能够使用std::numeric_limits
。
固定的代码块如下所示:
int num;
while ( !(cin >> num) ) {
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cout << "Enter valid number: " << endl;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句