2013-11-02 2 views
-3

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

+2

Почему бы вам просто не обработать ошибки? В вашей текущей ситуации простой ответ может показаться «эй, если я просто отключу эти ключи, они НЕ МОГУТ давать неправильный ввод, поэтому у меня не будет ошибки!» но если вы продолжаете программирование, будет время, когда вам придется разрешить все ключи, но не может быть введен неправильный вход. – nhgrif

+0

Извините, если это не большой вопрос. Я немного новичок в C++, так что не могли бы вы дать мне знать, как это сделать? – user2840892

+1

Если вы отредактируете свой вопрос, чтобы действительно спросить, как обрабатывать ошибки ввода, когда вы просите пользователя ввести целое число, я отправлю ответ. – nhgrif

ответ

0

Что вы хотите здесь, определенно НЕ отключить некоторые клавиши на клавиатуре. Однако после нажатия клавиши и отправки символа вы можете сравнить ее. Например, вы можете удалить последний вход, если он не конкретный тест:

Тогда вы действительно должны проверить окончательный ввод, чтобы гарантировать, что пользователь не нашел способ отправки Нецелочисленного значения ,

+0

Это просто легкая часть, что сложнее, интегрируя ее с остальными машинами потоков. Кстати, нет смысла пропускать один символ по ссылке const. –

+0

Вы правы. Я не знал, требуется ли это в консоли или графическом приложении. Другой ответ, вероятно, проще реализовать и поддерживать. Для ссылки const это только безопасный способ гарантировать, что ничто и никто не может изменить аргумент внутри функции. –

+0

С примитивными типами обычно вы просто передаете аргументы по значению. –

1
int x; 
std::cout << "Enter a number: "; 
std::cin >> x; 
while(std::cin.fail()) 
{ 
    std::cin.clear(); 
    std::cin.ignore(numeric_limits<streamsize>::max(),'\n'); 
    std::cout << "Bad entry. Enter a NUMBER: "; 
    std::cin >> x; 
} 
std::cout << "x = " << x << "\n"; 

std::system("pause"); 
return 0; 

Это будет оставаться в петле while до тех пор, пока пользователь не введет правильный целое число. Вы можете поместить больше проверок, чтобы убедиться, что номер, который вводит пользователь, с определенным диапазоном, или добавить переменные, чтобы разрешить определенное количество догадок и т. Д.

И, конечно, вы захотите редактировать подсказки и прочее адаптируйте это к тому, для чего вы его используете, но вы можете создать новый проект, загрузив этот файл и проверив его, чтобы увидеть, как он работает. Поиграйте с этим немного, и теперь вы знаете, как выполнять некоторые основные манипуляции с пользователем.

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

+0

Спасибо, но как вы могли бы также ограничить десятичные числа? – user2840892

+0

Изменение 'x' на' float' или 'double' должно позволить этому работать. – nhgrif

Смежные вопросы