Форум программистов, компьютерный форум, киберфорум
Наши страницы

Ввод cin - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ istream http://www.cyberforum.ru/cpp-beginners/thread931413.html
В 12 стоке ошибка no matching function for call to `std::basic_istream<char, std::char_traits<char> >::basic_istream(char*&, size_t)' В книге Страуструпа говорится, что нужно включить...
C++ Error 10022 в мультикаст сокете Здравствуйте, подскажите, пожалуйста, в чем проблема. Задача: настроить мультикаст сокет и что-либо принять. Сначала все идет хорошо... Сокет создается, биндится, а потом при попытке подключиться к... http://www.cyberforum.ru/cpp-beginners/thread931408.html
Ссылочный параметр не изменяет переменную в Main C++
Написал программу, где есть 2 функции, одна из них должна с помощью ссылочного параметра изменить переменную а в функции Main, но эта переменная не меняется после вызова этой функции. Подскажите,...
C++ Программа для занесения объявлений в текстовый файл, управление объявлениями из текстового файла
Доброго времени суток. Необходимо создать программу которая выполняет такие функции: 1. Занесение объявления (строка текста) в текстовый файл 2. Указание времени нахождения этого объявления в...
C++ Порядок байтов http://www.cyberforum.ru/cpp-beginners/thread931347.html
Заранее извиняюсь если не туда пишу... Помогите определить порядок байтов: 01 00 00 00 71 82 3D 00 CB 82 3D 00 ED 68 4C 23 8E 0E E5 3F 9D E9 B1 6F 1F 60 E0 BF 69 41 83 A8 56 AA E1 3F ...
C++ include Добрый день. Сейчас скачал MSVS 2012 про версию (хочу посмотреть что такое Visual assist), и при создании первого проекта не подключает iostream. Посмотрел в папке include, там только 3 файла -... подробнее

Показать сообщение отдельно
tramp_1-3
14 / 14 / 1
Регистрация: 13.10.2012
Сообщений: 432

Ввод cin - C++

31.07.2013, 13:44. Просмотров 764. Ответов 3
Метки (Все метки)

Я тут раньше задавал подобный вопрос, то тема умерла, по ходу. Здесь приведен листинг функции ввода калькулятора из книги Страуструпа.
Объясните мне тупому, как тут осуществляется ввод?
Ввод всего всего выражения целиком (например,2 + 4 * 8) происходит в
C++
1
if(!cin.get(ch)) return curr_tok = END;
?
Если да, то ведь в плюсах буферизованное выражения после прочтения
C++
1
while (ch!='\n' && isspace(ch))
выкидывается и нигде не хранится, тогда как происходит дальнейшее обращение к ch?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
token_value get_token () {
    char ch;
    do {                            //ïðîïóñêГ*ГҐГІ îáîáùåГ*Г*ûå ïðîáåëû Г§Г* èñêëþ÷åГ*ГЁГҐГ¬ \n
        if (!std::cin.get (ch)) return curr_tok = END;
    } while (ch != '\n' && isspace (ch));
    switch (ch) {
        case ';':
        case '\n':
            std::cin >> std::ws;
            return curr_tok = PRINT;
        case '*':
        case '/':
        case '+':
        case '-':
        case '(':
        case ')':
        case '=':
            return curr_tok = token_value (ch);
        case '0': case '1': case '2': case '3': case '4':
        case '5': case '6': case '7': case '8': case '9':
        case '.':
            std::cin.putback (ch);
            std::cin >> number_value;
            return curr_tok=NUMBER;
        default:
            if (isalpha (ch)) {
                char* p = name_string;
                *p++ = ch;
                while (std::cin.get (ch) && isalnum (ch)) *p++ = ch;
                std::cin.putback (ch);
                *p = 0;
                return curr_tok=NAME;
            }
            error ("wrong lexical token");
            return curr_tok=PRINT;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru