告诉用户只能使用整数

时间:2019-02-20 03:56:16

标签: c++ cin cout

我正在一个项目中,用户需要输入一个整数。但是,如果用户键入一个十进制数字,我必须提醒用户仅允许使用整数。我该如何在C ++中键入。

1 个答案:

答案 0 :(得分:0)

使用std::getline函数读取整行。然后,使用C标准库strtol函数来确保用户输入了有效的整数。它将errno设置为非零值以指示溢出,如果存在无效字符,则将*endptr设置为无效字符的第一个实例。如果设置了这些指标中的任何一个,我们将重新运行do循环,使用户重新输入数字,直到数据有效

std::string line;
char *endptr;
long n;

do {
    std::cout << "Enter integer >= 0\n";
    std::getline(std::cin, line);

    n = strtol(line.c_str(), &endptr, 10);
} while ((errno != 0 && n == 0) || endptr == line.c_str() || *endptr != '\n' || n < 0);

// at this point, n is valid