我正在开发一个用户需要输入整数的项目。但是,如果用户键入十进制数字,我必须提醒用户只允许整数。如何在C ++中输入。
使用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