虽然循环在输入方面表现得很奇怪

While loop acting weird in regards to input

本文关键字:面表 循环 输入 方面表      更新时间:2023-10-16

一直在做一个简单的学校项目,但我在使用 while 循环验证用户输入方面遇到了一个小问题。以下代码用于执行此操作:

cout << "How much woud you like to bet?[100, 300, 500]" << endl;
cin >> int_input;
if (cin.fail()){
int_input = 0;
}
//Validate check
while(int_input!=100 && int_input!=300 && int_input!=500){
cout << "Please enter a valid bet [100, 300, 500]" << endl;
cin >> int_input;
if (cin.fail()){
int_input = 0;
}
}

当输入非整数并且循环最终一遍又一遍地吐出 cout msg 时,就会出现问题,从而跳过对新输入的请求。我假设非整数总是为 while 循环返回 true,但程序仍然应该要求用户输入,对吧?

cin.fail 是最近添加的,可能不是必需的,因为它不能解决问题,尽管我保持代码原样。

如果流中出现错误,请将值设置为0。所以循环再次运行...并且错误仍在流中。重复。

您需要清除错误标志。

cin.clear();

然后提取足够的"坏"数据来进入好的部分,否则你就会回到你开始的地方。