0

我目前正在做一个简单的“你几岁”计算器。但我想检查用户输入的是 int 还是 char。所以我做了这个:

 if (!cin) {

cout << "Error" << endl; 
cin >> year;

}

但是,如果我这样做并输入一个字符,它只会通过并且不允许新的输入。

4

1 回答 1

0

参考:输入 char 的 int 的 cin 会导致本应检查输入的循环变得疯狂

这是重复的,但规范的答案是:

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

它将打印错误三遍。

于 2013-11-06T01:52:50.723 回答