提问者:小点点

如何验证整数输入[重复]


例如,我有代码:

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

匿名用户

可以使用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迭代器。