我目前正在做一个简单的"你多大了#34;计算器。但我想检查用户是否输入了int或char。所以我这样做了:
if (!cin) {
cout << "Error" << endl;
cin >> year;
}
但是,如果我这样做并输入一个字符,它只是通过并且不允许新的输入。
答案 0 :(得分:0)
参考:cin for an int inputing a char causes Loop that is supposed to check input to go wild
这是重复的,但规范的答案是:
std::cin.clear(); // clears the error flags
// this line discards all the input waiting in the stream
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
然后执行以下操作:
int year;
while (!(std::cin >> year)) {
std::cin.clear(); // clears the error flags
// this line discards all the input waiting in the stream
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << "error" << std::endl;
}
// do something with year
所以如果你的输入看起来像:
a
b
c
42
它将打印错误三次。