如何验证输入只是数字?

时间:2017-02-27 14:23:30

标签: c++

我不会检查年龄是否是数字在这个例子中它会接受1E作为数字而它不接受E1,我不会只接受数字
没有任何符号或字母

 int main()
    {
      int age= 0;
        std::cin >> age; 
        if (std::cin.fail())
        {
        std::cout << "I failed, try again ..." << std::endl;
        std::cin.clear(); // reset the failed state
    }

1 个答案:

答案 0 :(得分:0)

真正的cin和提取运算符不适合解析用户输入。它们可以输入自动格式化的记录,但不能输入可能存在自由格式错误的输入。

如果你使用基于行的输入,然后调用函数strtol(),你可以找到数字。 strtol()还处理负号和数字,它们太大而不能容纳整数。它本质上是安全的整数解析器。此外,如果出错,您可以轻松丢弃整行并要求用户重新输入,这通常是所需的行为。