как ограничить ввод только числами С++

Я здесь с основным вопросом: есть ли способ предотвратить выполнение программой символов в программе типа «Меню», где вы выбираете параметры во время работы консоли и вводите числа только для выполнения шагов и просмотра данных.

Моя программа представляет собой каталог книг, где вы можете просмотреть, изменить, добавить или удалить информацию.

Все было бы не так плохо, но дело в том, что когда вы вводите букву или нечисловой символ, программа запутывается и зависает.

Я не добавляю свой код, так как считаю, что должна быть универсальная команда для избавления от моей проблемы + перевод моего кода на EN занял бы некоторое время.

Жду ваших ответов, хорошего дня


person pindutis    schedule 11.03.2017    source источник


Ответы (2)


Я думаю, что самый простой способ сделать это - использовать функцию getline. Вместо использования cin >> num; например, вы могли бы использовать getline(cin,value); где «значение» — это строка, в которой вы сначала сохраняете свой ввод. Затем вы можете сделать num = atoi(value.c_str()); чтобы сохранить введенную строку как целочисленное значение в «num». Если «num» — число с плавающей запятой, то просто используйте atof вместо atoi. Таким образом, если строка не является числом, она просто устанавливает значение в 0. Затем вы можете использовать оператор if для отображения сообщения об ошибке, если значение num == 0. Надеюсь, это поможет. Удачи!

person Freak Demon    schedule 12.03.2017

Если ваше приложение работает в консоли и вас беспокоит неверный (нечисловой) ввод, возможно, вам следует вводить не число, а текст, а затем анализировать его, чтобы убедиться, что это действительно число. Если нет, сообщите пользователю, что ввод неверен, и позвольте ему ввести его снова.

person Vit Kovalcik    schedule 11.03.2017
comment
Спасибо за совет ‹3 - person pindutis; 12.03.2017