2014-01-03 5 views
1

Я хочу проверить вход пользователя, чтобы убедиться, что это целое число (полностью). Я пробовал несколько методов, как CIN, но ни один из них не работает должным образом ..Как правильно проверить целое число на C++?

Большинство методов не проверки вводимых данных, как это:

32tgf 

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

Примечание: это проект для колледжа, и указано, что переменная должна иметь тип int.

+1

Вы говорите, что вы пробовали методы ... где код? Как вы не смогли найти ни один из десятков хороших существующих ответов здесь, на StackOverflow? –

+0

Какой синтаксис? Ведущий знак «+ | -»? Он обрабатывает шестнадцатеричные и т. Д.? –

ответ

3

Читайте в строке, затем используйте, например. std::stoi или std::strtol как для преобразования в целое число, так и для проверки ввода.

Или прочитайте строку, поместите эту строку в std::istringstream, который вы используете для извлечения целого числа. Затем проверьте, есть ли что-то еще в istringstream.

Я бы порекомендовал первый метод.

+0

Это еще не работает для случая 32tgf. Функции, о которых вы упоминаете, будут останавливаться на первом несимметричном символе. –

+2

@ThomasMatthews Да, но у них есть аргументы, которые возвращают позицию, где она останавливается. Если это не конец, то у вас нет действительного ввода. –

+0

@Thomas: см. Http://stackoverflow.com/a/16575025/103167 –

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