C ++检查输入是否为int并重做输入,直到它为int

时间:2013-11-06 01:46:02

标签: c++ char int

我目前正在做一个简单的"你多大了#34;计算器。但我想检查用户是否输入了int或char。所以我这样做了:

 if (!cin) {

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

}

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

1 个答案:

答案 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

它将打印错误三次。