如何验证整数输入

How can I validate an integer input

本文关键字:整数 输入 验证 何验证      更新时间:2023-10-16

例如,我有代码:

#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 语句。我怎么能忽略所有输入并只接受其中的纯数字?

您可以使用

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迭代器。