如何在c ++中检查cin是否为int?

时间:2014-11-18 21:02:13

标签: c++

我正在编写一个程序,此时只接受int用于用户输入,如果不是,则继续询问用户,直到得到正确的整数。以下是代码:

cout << "enter two integers: " << endl;
string input1, input2;
cin >> input1;
cin >> input2;

while (//if they are not integers)
...//ask again

正如您所看到的,我使用字符串来存储输入,但我不知道如何检查此字符串只包含整数。

2 个答案:

答案 0 :(得分:1)

如果用户没有输入正在预期的正确数据类型,则cin将切换它的failbit。将输入的数据类型更改为int并检查此failbit将允许您验证用户输入。

cout << "enter two integers: " << endl;
int input1, input2;
cin >> input1;
cin >> input2;

while (!cin.good())
{
    cin.clear();
    cin.ignore(INT_MAX, '\n')
    ...//ask again
}

答案 1 :(得分:1)

你根本不应该使用string

int input1, input2;
cin >> input1;

然后您可以检查cin是否失败

if (!cin) {
     // input was not an integer ask again
}