Написал функцию, которая запрашивает ввод пользователя до тех пор, пока он не введёт число (если дробное, то преобразуется в целое с округлением к нулю). После этого поток очищается и возвращается первое введённое число.
Вопрос вот в чём: возможно ли сделать так, чтобы выполнялось условие при вводе больше одного числа в поток? Например, при вводе: 123 4 5
short safeInput() {
short val = 0;
while (!(std::cin >> val)) {
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << "Wrong input, only integers are expected!" << std::endl;
}
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
return val;
}
Вам просто нужно поменять short val на double val и возвращать из функции val < 0 ? --val : val;. И не важно после правильного ввода еще что введет пользователь...
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости