为什么不能在while循环中重新分配整数值?

问题描述

我正在创建(应该是)一个非常简单的代码来计算一些电影价格。我需要以下输入变量:movie_title,adult_tickets_sold,child_tickets_sold。我正在尝试添加例外,以防有人为售票变量输入非整数的内容。在python中是这样的:

favorite_number = None
while True:
    tmp = input("Enter your favorite number: ")
    try:
        favorite_number = int(tmp)
        break
    except ValueError:
        print("Enter an integer value please...")

这是我现在在C ++中遇到的循环(目前仅处理一个输入):

while (con==true){
        cout << "How many adult tickets sold? " << endl;
        cin >> bigBoy;

        if (cin.fail()){
            cout << "\nYou entered text instead of a number!\nLet's try that again!\n\n"<< endl;
            cout << "Please enter an integer: ";
            cin >> bigBoy;
            continue;
        }
        cout << "How many children tickets sold? " << endl;
        cin >> lilSquirt;

        con=false;
    }

无论何时触发if语句,它都会完全忽略'cin'并无限打印:

You entered text instead of a number!
Let's try that again!


Please enter an integer: How many adult tickets sold?

不知道为什么会这样。

解决方法

 if (cin.fail()){
        cin.clear();
        cin.ignore(22,'\n');
        cout << "\nYou entered text instead of a number!\nLet's try that again!\n\n"<< endl;
        cout << "Please enter an integer: ";
        cin >> bigBoy;
      //  continue;
    }

您必须清除cin。如果您同时需要成人票和儿童票,也请注释掉继续声明。