即使仍然满足条件,该循环也会终止

This loop terminates even though the condition is still met.

本文关键字:循环 终止 条件 满足      更新时间:2023-10-16

你好,这是我的第二个问题(对不起,如果这是一个简单的问题)

我正在尝试使用循环检查输入是否有效。但是,该循环似乎不尊重输入是否有效。

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');
}