【问题标题】:How to check if cin is int in c++? [duplicate]如何检查 cin 在 C++ 中是否为 int? [复制]
【发布时间】:2014-11-18 21:02:13
【问题描述】:

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

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

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

如你所见,我使用字符串来存储输入,但我不知道如何检查这个字符串是否只包含一个整数。

【问题讨论】:

  • 这当然不是字面上的重复,但您的问题的答案以及要考虑的代码都显示在那里。

标签: c++


【解决方案1】:

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

#include <limits> // This is important!

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

while (!std::cin.good())
{
    std::cin.clear();
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    ...//ask again
}

【讨论】:

    【解决方案2】:

    你根本不应该使用string

    int input1, input2;
    cin >> input1;
    

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

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

    【讨论】:

    • 但这仅适用于非 0 .... 包括文本。
    猜你喜欢
    • 2015-11-21
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2011-02-20
    相关资源
    最近更新 更多