即使仍然满足条件,该循环也会终止
This loop terminates even though the condition is still met.
你好,这是我的第二个问题(对不起,如果这是一个简单的问题)
我正在尝试使用循环检查输入是否有效。但是,该循环似乎不尊重输入是否有效。
int b(-1);
check = false;
while (b < 1 || b > 12)
{
if (check)
std::cout<<"Sorry try again!nMonth: ";
std::cin>>b;
check = true;
{
如果用户输入1到12之间的值。否则继续使用循环。
但是,当我运行程序并输入非valid输入时,它会继续。
Year: 2017
Month *In number format*: 20
Day:
偶数-1不起作用,这很奇怪,因为在循环启动之前,我将值设置为-1。
Year: 2017
Month *In number format*: -1
Day:
是使用或大于大于和大于大于的语句的使用吗?
如果输入无效输入,将设置流的失败位。在这种情况下,目标变量(b
)不会修改,只要您不清除位,operator>>
的每个后续呼叫也会失败,无论您提供什么输入。实际上,输入根本不是从流中获取,因此您将一次又一次地重新阅读。
您应该检查std::in
的状态,如果需要清楚,则错误位并丢弃无效输入:
if(std::in.fail())
{
std::in.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
}
相关文章:
- while 循环不以哨兵值终止
- 在这个无限循环中,当输入 0 时终止,当输入 int 范围之外的任何内容时,程序行为不正常
- C++ 即使不满足条件,循环也会终止
- 为什么 EOF 在循环扫描期间没有终止?
- 对于检查 >=0 终止条件时的循环索引类型
- 程序在终止循环后不接收输入
- 即使我尝试递减 t,While 循环也没有终止
- 如何修复不会在退出选择时终止的 do-while 循环
- 如何用字符终止整数输入循环?
- 读入变量时循环终止,'Range_error' on C++
- 当我输入非整数值时,我的二次方程代码终止,如何让它正确循环?
- 如何正确终止此循环?
- 多个查询的循环过早终止
- 循环终止不正确时
- c 在函数的循环终止时
- 而循环终止问题
- 当循环终止被覆盖时
- 循环终止条件错误的 cpp 向量
- C++作业(循环终止时)
- 是否定义有一个随机的循环终止条件?