защита от ошибочного ввода - PullRequest
1 голос
/ 27 января 2011

Я работал с числами (int, float, double, long, unsigned), но когда я помещал в консоль другой символ (например, ^[[A или *).Следовательно, моя программа дает сбой

Как я могу защитить свою программу от этого ошибочного ввода?

Примечание: я знаю некоторые библиотечные функции, а именно isdigit или isallnum, но они не очень помогают

Ответы [ 2 ]

1 голос
/ 27 января 2011

Способ сделать это как в C, так и в C ++ - это прочитать все входные данные как строки, а затем проанализировать строку.

Это одна из причин, по которой вы никогда не должны использовать scanf ("% d")или cin >> integer для любых других целей, кроме программ отладки / обучения / увлечения.

0 голосов
/ 27 января 2011

В C ++ это можно сделать, отфильтровав данные через поток строк.Обсуждение того, как это сделать , можно найти на вводном сайте курса C ++ в Стэнфорде, с полным кодом для чтения целых чисел на странице 19. Остальная часть главы также является хорошим ресурсом в целом о том, как выполнять ввод / вывод.в C ++, что также может быть полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...