当收到无效输入时,为什么(true)跳过CIT
Why does while (true) skip cin when it received invalid input?
此while-loop在接收错误输入(非整数(后不等待CIN的输入。CIN是否以某种方式保持虚假状态?
while (true) {
int x {0};
cout << "> ";
cin >> x;
cout << "= " << x << endl;
}
我希望这是循环每次等待输入的,但是当它收到错误输入时,这不再发生。
cin
失败后,它一直处于无效状态,直到清除为止。
clear((无参数可以使用意外输入后解开失败限制
通过分配它们的值来设置流错误状态标志 状态。默认情况下,分配std :: ios_base :: goodbit具有效果 清除所有错误状态标志。
@peter指出,您还必须清除缓冲区。
您的示例就是这样:
while (true) {
int x{0};
cout << "> ";
if (!cin) {
// unset failbit
cin.clear();
// clear the buffer
cin.ignore(numeric_limits<streamsize>::max(), 'n');
}
cin >> x;
cout << "= " << x << endl;
}
相关文章:
- 无论我使用什么,我的输入都会被跳过
- C++ If/Else 语句被跳过
- 转换器练习:跳过 if 语句和 if 语句
- C++ cin.ignore() 跳过循环
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- CIN 仅在输入非数字值时跳过下一个 CIN
- 提升精神 x3 解析为结构,如果它为空,则跳过成员
- 在 if 语句中使用 GetKeyState 时,它会跳过条件
- 而循环跳过 cin.getline() 对于 C 字符串
- 野牛/yacc 解析器在不被空格分隔时跳过 grammer - "unexpected $end"
- 如果以下行不包含决策或分支,GDB 无法单步跳过函数
- 跳过输入并输出 garabge 值
- 在运行时有条件地删除类成员或跳过调用该成员对象的构造函数
- 通过跳过可选参数来填充参数包
- ifstream 跳过数字,只写 0
- 如何在跳过所有内部实现的同时跳转到 GDB 中 std::function 中的函数?
- 图形初学者C++(跳过控制台)?
- C++用于循环跳过向量的元素?
- 当收到无效输入时,为什么(true)跳过CIT
- 如果条件被跳过,则为true