在用户输入时并不想通过重新运行来输入,于是就用cin.fail()和cin.clean+cin.ignore()来完成
#include <iostream>
using namespace std;
int main() {
int x;
cout << "请输入一个1~10的整数:";
while (true) {
cin >> x;
if (cin.good()) {
if (x < 1 || x>10)
cout << "范围错误,请重输:";
else {
cout << "正确!" << endl;
break;
}
}
else {
cout << "不是整数,请重输:";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
}
结果如下
请输入一个1~10的整数:abc
不是整数,请重输:123
范围错误,请重输:5
正确!