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