我的C++教授坚持在检查输入失败时,必须为每个单独的输入使用单独的while()
循环。他表示,检查多于一个输入以下方法聚集在一个cin
说法是行不通的:C++输入失败:单个语句中有多个输入
while (!good){
cout << "Enter the length and the width of the rectangle: ";
cin >> length >> width;
if(!cin){
cout << "Bad input, try again" << endl;
cin.clear();
cin.ignore(200, '\n');}
else {
good = true;}}
他提出的方法:以上
bool good = false;
while (!good){
cout << "Enter the length rectangle: ";
cin >> length;
if(!cin){
cout << "Bad input, try again" << endl;
cin.clear();
cin.ignore(200, '\n');}
else {
good = true;}}
while (good){
cout << "Enter the width rectangle: ";
cin >> width;
if(!cin){
cout << "Bad input, try again" << endl;
cin.clear();
cin.ignore(200, '\n');}
else {
good = false;}}
我的方法似乎工作就好了。如果输入了任何一个输入的非数字字符,则循环将提示输入新的信息并清除故障状态。
它是否被认为是不正确的形式来检查输入失败?我希望更清楚地了解为什么我的方法是错误的。如果我的方法有问题,是否有办法检查输入失败,而不用为每个用户输入使用单独的循环?我主要问,因为我正在编写一个程序,涉及从文件中获取许多输入,并且单独检查每个变量似乎过于乏味。我在想,一定有更好的办法。
你的教授需要了解这种新语法(只有40岁)被称为一个做一段时间。 – 2015-03-24 23:57:32
为了更接近希腊化名:更多关注,两种代码都不检查“eof”标志。 – 2015-03-24 23:59:06
您可能会发现[C++ FAQ:如何获得std :: cin来跳过无效输入字符?](https://isocpp.org/wiki/faq/input-output#istream-and-ignore)有用(请参阅第二个代码示例。) – 2015-03-25 00:02:24