我希望程序循环直到输入有效(x是一个int,并且x>0),但是当我给它1,1时我的程序接受输入,当我给它一个字符串时无限循环,重复“输入错误!”。
#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;
}
最佳答案
在 if 语句中使用标准成员函数ignore
。例如
std::cin.ignore(std::numeric_limits<std::streamsize>::max(),’\n’);
或者只是
std::cin.ignore();
用于跳过缓冲区中的无效符号。
关于c++ - C++中输入检查的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35719352/