2012-11-16 4 views
12

Я хочу получить строку чисел один за другим, поэтому я использую цикл while с cin.get() как функцию, которая получает мои цифры один за другим.Использование cin.get для получения целого числа

Но cin.get() получает цифры, как char с и несмотря на то, что я пытаюсь использовать кастинг я не могу получить переменные содержат numrical значение, а не значение ASCII чисел, которые я получаю в качестве входных данных.

ответ

20

cin.get не может разобрать номера. Вы можете сделать это вручную - но зачем беспокоиться о повторной реализации этой функции, поскольку она уже существует? *

int number; 
std::cin >> number; 

В целом, операторы потока (<< и >>) заботиться о отформатирован выходе и входе, istream::get с другой стороны, извлекает только сырые символы.


* Конечно, если у вас есть повторно реализовать эту функцию, нет ничего для него.

Чтобы получить числовое значение от символа цифры, вы можете использовать коды символов десятичных цифр 0-9 последовательно. Таким образом, может быть скрыта следующая функция:

int parse_digit(char digit) { 
    return digit - '0'; 
} 
+0

Мне не разрешено использовать функции, которые я не изучал на лекциях. – Quaker

+8

@Eran О, отлично, какое глупое требование. Хорошо, позвольте мне исправить ответ. –

+0

'static_cast' не требуется. Компилятор преобразует значение 'char' в' int', не сказав. –

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