我希望程序循环,直到输入有效(x是一个int,x> 0),但我的程序接受输入,当我给它1,1无限循环,当我给它一个字符串,重复“错误的输入!”。输入检查在c + +中的问题
#include <iostream>
using namespace std;
int main()
{
bool fail;
int x;
do{
cin >> x;
fail=(cin.fail() || x<=0);
if (fail){
cout << "Wrong input!" <<endl;
cin.clear();
};
}while(fail);
return 0;
}
我应该用它代替cin.clear()? – R2DToo
@ R2DToo在cin.clear()之前插入呼叫 –
对输入“asd”仍然保持循环。 对于“1.1”,它给出1 – R2DToo