2013-08-12 2 views
0

У меня вопрос о том, «как cin преобразует символы в соответствующие типы», потому что я немного смущен в этом вопросе.Как cin конвертировать символы в соответствующие типы

Например, у нас есть: int a; cin >> a;
И если ввод, например, 3, я знаю, что cin принимает это как символ и преобразует его в int, но как он его преобразует, ясно, как cin может преобразовывать char (3) в int (3), какое преобразование он использует, потому что если мы преобразуем char 3 в int с typecast, значение int будет ASCII-код для '3'.

Итак, может ли кто-нибудь объяснить этот вопрос mee в отличных деталях, пожалуйста?

+1

Учитывая строку цифр, такую ​​как '' 6481 '', можете ли вы разобрать и создать '6481'? Если можете, значит, вы уже знаете ответ; если вы не можете, то вы также не поймете ответ на свой вопрос. Знайте основные вопросы и задайте более простой вопрос, например: ** как разбирать '' 6481'' и производить 6481? ** – Nawaz

+0

Это более или менее похоже на сканирование последовательности символов цифр и вызов 'atoi 'на результат. –

+0

В отличных деталях - книга могла (читайте на перегрузке оператора «>>»). Кроме того - это строка, которая преобразуется. С этой точки зрения char (3) и int (3) имеют одинаковую строку: «3», которая затем анализируется в массив символов и в конкретный тип. – hauron

ответ

2

Преобразование происходит в трех последовательных этапах, подробно описанных в this page. По сути, происходит то, что символы берутся из буфера входного потока и преобразуются в их соответствующие типы через спецификаторы преобразования, полученные посредством итерации по каждому символу. Поскольку в вашем примере используется целое число, спецификатор преобразования равен long. Эти спецификаторы преобразования, посредством определенного для реализации способа, используются для преобразования ввода в тип переменной.

+0

спасибо, много – user80755

+0

@ user80755 Можете ли вы принять решение? Это помогает. – 0x499602D2

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