如何验证整数输入

时间:2016-03-12 05:30:21

标签: c++ validation

例如,我有代码:

#include <iostream>
using namespace std;

int main()
{
    int test = 0;
    cout << "Please input a number:";

    while(!(cin >> test))
    {
        cout << "Invalid input";
    }

    if(test  == 1)
    {
        cout << "Test is 1";
    }
    else
    {
        // Do something
    }
   return 0;
}

如果我将1abc输入到测试变量,即使输入错误,它仍会继续处理if语句。我怎么能忽略所有的输入,只接受纯数字?

1 个答案:

答案 0 :(得分:2)

您可以使用getlinefind_if_notisdigit来检查整行是否为有效整数。这将循环,直到它读取整数:

std::string number;
while (std::getline(std::cin, number) && number.end() !=
       std::find_if_not(number.begin(), number.end(), &isdigit))
    std::cout << "gitgud!";

getline将读取新行的输入,并将其放入字符串中。 find_if_notisdigit会找到第一个非数字字符。如果没有(意味着它是一个有效的整数),它将返回end迭代器。