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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
#1

Как работает метод get и putback (Подсчитать количество символов ввода вплоть до значения '$') - C++

07.07.2014, 12:00. Просмотров 877. Ответов 3
Метки нет (Все метки)

Задание простое: подсчитать количество символов ввода вплоть до значения '$', и оставить '$' во входном потоке.

Вот готовое решение:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
int main(void)
{
    using namespace std;
 
    char ch;
    int count = 0;
 
    while (cin.get(ch) && ch != '$')
        count++;
    if (ch == '$')
        cin.putback(ch);
   
    cout << count << " characters read\n";
    
    cout << "Then next input character is " << (char)cin.get() << endl;
    system("pause");
    return 0;
}
Как я понимаю, get() извлекает из потока символ, который мы вводим с клавиатуры, и присваивает его значению ch.
Но вот строка с if не очень понятна: если ch равен '$', то мы с помощью функции putback удаляем '\n' из потока и последним остается '$'. Но возникает вопрос: последним символом является как раз перевод строки! Почему тогда ch == '$'.

Помогите пожалуйста растолковать решение.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2014, 12:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как работает метод get и putback (Подсчитать количество символов ввода вплоть до значения '$') (C++):

Как подсчитать количество одинаковых символов в строке? - C++
Вот сама задача: Написать программу, которая проверяет, сколько каждый символ встречается во введённой с клавиатуры строке. Вот то не...

Как в с/с++ можно подсчитать количество символов, обработанных в единицу времени - C++
Добрый день, у меня такой вопрос: Допустим есть функция перебирающая большой текстовый файл и например подсчитывающая количество...

Вводится последовательность символов. Признак конца ввода – точка. Посчитать количество символов не являющихся пробелами - C++
Порядок выполнения работы 1.Изучите теоретическое обоснование и проанализируйте приведенные выше примеры программ с циклами типа for,...

Как подсчитать количество символов в строке - Visual Basic
Дана текстовая строка. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть...

Как подсчитать количество измененных символов? - C (СИ)
Условие задачи такое: заменить все большие буквы на маленькие и подсчитать количество замен. Каким образом мне подсчитать сколько букв я...

Как подсчитать количество символов в файле??? - PHP
Как подсчитать количество символов в файле, а потом вывести на экран определенное количество символов???

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6363 / 5927 / 1922
Регистрация: 18.12.2011
Сообщений: 15,234
Завершенные тесты: 1
07.07.2014, 12:04 #2
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
с помощью функции putback удаляем '\n' из потока
С чего Вы это решили.
Метод putback - загоняет символ '$' обратно в поток,
т.е. при последующем get он снова прочитается.
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
07.07.2014, 13:42  [ТС] #3
zss, значит putback загоняет последний извлеченный символ в поток, следовательно get просто извлекает символ из потока, и в этом самом потоке его удаляет? я правильно понимаю?
ничего не понимаю честно говоря
каким образом тогда заполняется поток?

то есть если я ввожу abcd$'/n' в буфер, и cin.get по отдельности извлекает каждый символ кроме последнего, и потом обратно загоняю в буфер с помощью putback ?
zss
Модератор
Эксперт С++
6363 / 5927 / 1922
Регистрация: 18.12.2011
Сообщений: 15,234
Завершенные тесты: 1
07.07.2014, 18:45 #4
Последний извлеченный символ у Вас $.
Потом Вы его загоняете обратно, и в потоке остаются непрочитанными
$ и '\n'.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2014, 18:45
Привет! Вот еще темы с ответами:

Как подсчитать количество определенных символов в строке? - Visual Basic .NET
Итак: есть файл с длинной строкой содержащей подряд множество символов. Задача подсчитать их общее количество и количество каждого символа....

Как подсчитать введенное количество символов в edittext? - Программирование Android
Как подсчитать введенное количество символов в edittext?(android)

Как подсчитать количество строк и символов в RichTextBox? - Visual Basic .NET
Кто знает, как подсчитать количество строк и символов в RichTextBox?

Как подсчитать количество кириллических символов в строке? - PHP
У меня не получается правильно подсчитать количество кириллических символов. У меня почему то идет один символ за два вот что я использую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.07.2014, 18:45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru