虽然循环在输入方面表现得很奇怪
While loop acting weird in regards to input
一直在做一个简单的学校项目,但我在使用 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();
然后提取足够的"坏"数据来进入好的部分,否则你就会回到你开始的地方。
相关文章:
- 使用std::list创建循环链表
- 遍历链表时的无限循环
- C++声明双链表,使用两个 for 循环双向遍历列表并打印
- 实现基于链表的堆栈的基于范围的 for 循环
- 为什么我在尝试在单向链表中打印元素时会出现这个永无止境的循环
- 循环链表:无限循环
- 如何在 for 循环中编写此表?
- 循环访问资源字符串表
- 循环访问自定义双链表
- 打印循环链表
- 循环回到z之后的字母表的开头
- 还有其他方法可以为乘法表编写循环以获取运行时值吗?
- C++循环链表删除,计数从下一个节点开始
- 卡在链表中的无限 Do-while 循环中
- C++ 循环链表的递归基本情况
- 从文本文件加载链表并打印时无限循环
- 插入无限循环运行的单向链表
- 使用 C API 的有序 lua 表循环
- 链表循环达到无穷大
- 链表循环不正确