我有一个 while 循环,如果用户输入错误,它会重新启动。
do{
cerr<<"Input the numbers divided by a space"<<endl;
cin>>number1>>number2;
hiba=(cin.fail() || number1<1 || number1>100 || number2<1 || number2>100);
if(fail){
getline(cin, sz);
cerr<<"Wrong input"<<endl;
}
}while(fail);
这两个变量都是整数,如果数字小于 0 或大于 100,它会起作用,但如果用户输入一个字符,它就不起作用,因为它会启动无限循环。
最佳答案
试试这个
int main()
{
int tanulokszama,versenyekszama;
bool hiba;
string sz;
do{
cerr<<"Adja meg az elsõ sort!"<<endl;
cin>>tanulokszama>>versenyekszama;
hiba=(cin.fail() || tanulokszama<1 || tanulokszama>100 || versenyekszama<1 || versenyekszama>100);
if(hiba){
cin.clear();
cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
//getline(cin, sz);
cerr<<"Rossz adatot adott meg!"<<endl;
}
}while(hiba);
}
注意:
不要忘记包含
#include<limits>
关于C++ - 检查 cin 是否有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40833266/