问题描述
我正在创建(应该是)一个非常简单的代码来计算一些电影价格。我需要以下输入变量: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。如果您同时需要成人票和儿童票,也请注释掉继续声明。