Форум программистов, компьютерный форум CyberForum.ru

Ввод 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)' В книге Страуструпа говорится, что нужно включить <strstream.h>, но мой компилятор его не находит, в интернете советуют включать sstream, что я и сделал. В книге точно так же, только нет std::. Я так понял, вызывается функция неправильно? #include <cstdlib>...
C++ Error 10022 в мультикаст сокете Здравствуйте, подскажите, пожалуйста, в чем проблема. Задача: настроить мультикаст сокет и что-либо принять. Сначала все идет хорошо... Сокет создается, биндится, а потом при попытке подключиться к мультикаст группе выдает ошибку 10022 (Invalid argument). Я думаю, что проблема с адресом. Читала, что в Windows нужно писать не адрес источника мультикаста, а INADDR_ANY, к сожалению тоже не... http://www.cyberforum.ru/cpp-beginners/thread931408.html
Ссылочный параметр не изменяет переменную в Main C++
Написал программу, где есть 2 функции, одна из них должна с помощью ссылочного параметра изменить переменную а в функции Main, но эта переменная не меняется после вызова этой функции. Подскажите, почему ? #include<iostream> using namespace std ; float tripleCallByValue (float ); float tripleCByReference (float &); int main () { float a;
C++ Программа для занесения объявлений в текстовый файл, управление объявлениями из текстового файла
Доброго времени суток. Необходимо создать программу которая выполняет такие функции: 1. Занесение объявления (строка текста) в текстовый файл 2. Указание времени нахождения этого объявления в текстовом файле (вводится дата занесения объявления и кол-во дней) 3. Автоматическое удаление объявления из файла по истечении срока 4. Удобное наглядное представление текущих объявлений в табличном...
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 3A D5 52 27 3D DF C8 3F
C++ include Добрый день. Сейчас скачал MSVS 2012 про версию (хочу посмотреть что такое Visual assist), и при создании первого проекта не подключает iostream. Посмотрел в папке include, там только 3 файла - pgobootrun.h, srv.h, vsgcapture.h Что пошло не так? Может имеет смысл переустановить? Добавлено через 9 минут А вообще неважно. Продолжу использовать 2013 студию, там автодополнение кода гораздо... подробнее

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

Ввод cin - C++

31.07.2013, 13:44. Просмотров 679. Ответов 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;
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru