Говорить пользователю, что разрешены только целые числа - PullRequest
0 голосов
/ 20 февраля 2019

Я работаю над проектом, в котором пользователю нужно ввести целое число.Однако, если пользователь вводит десятичное число, я должен предупредить пользователя, что разрешены только целые числа.Как я могу напечатать это в C ++.

1 Ответ

0 голосов
/ 20 февраля 2019

Используйте функцию 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
...