Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/55: Рейтинг темы: голосов - 55, средняя оценка - 4.82
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102

Ещё раз про поток stringstream!

18.01.2013, 10:13. Показов 11856. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Вобщем понадобился мне этот поток...
Поискал я как его очищать... Нашёл несколько способов...
Собственно метод str("") и метод clear().
Первый как я понял зачищает строку нулевым значением, а второй сбрасывает флаги у потока.
И вот что у меня получилось.
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
#include <iostream>
#include <sstream>
 
using namespace std;
 
int main()
{
 string st;
  stringstream ss;
   cout << "Передаём потоку слово." << endl;
    ss << "слово";
     cout << "смотрим что в потоке: " << ss.str() << endl;
      ss >> st;
       cout << "смотрим что в строке: " << st << endl;
        ss.clear();
         cout << "Очистили поток clear и смотрим: " << ss.str() << endl;
          ss << "мечта";
           cout << "смотрим что теперь в потоке: " << ss.str() << endl;
            ss >> st;
             cout << "смотрим что в строке: " << st << endl;
 ss.clear();
  cout << "очистили ещё раз: " << ss.str() << endl;
             ss << "счастье";
  cout << "пробуем ещё раз, смотрим: " << ss.str() << endl;
   ss >> st;
    cout << "смотрим ещё раз на строку: " << st << endl;
             ss.str("");
               cout << "очистили поток str и смотрим: " << ss.str() << endl;
                ss << "любовь";
                 cout << "смотрим что в потоке: " << ss.str() << endl;
                  ss >> st;
                   cout << "смотрим что в строке: " << st << endl;
                    return 0;
                     }
Компилим и запускаем.
ipavel@raspberrypi:~/cpp_progs$ ./test
Передаём потоку слово.
смотрим что в потоке: слово
смотрим что в строке: слово
Очистили поток clear и смотрим: слово
смотрим что теперь в потоке: словомечта
смотрим что в строке: мечта
очистили ещё раз: словомечта
пробуем ещё раз, смотрим: словомечтасчастье
смотрим ещё раз на строку: счастье
очистили поток str и смотрим:
смотрим что в потоке:
смотрим что в строке: счастье
ipavel@raspberrypi:~/cpp_progs$
Вобщем при clear(), в потоке так и остаются данные, хотя в переменную он пишит правильно.
Т.е. только то что было передано ему в последний раз.
При методе же str(""), поток очищается НО после такой очистки в него ничего не запишешь...
Отсюда вопрос.
Так всётаки как правильно его пользовать???
Кто в курсе разъясните плз!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.01.2013, 10:13
Ответы с готовыми решениями:

Ещё раз про использование указателей
Здравствуйте! Проблема многих новичков, не перестроился мог на ссылки и указатели в С++. Много прочитал, просмотрел, чужие примеры...

Еще раз про setw: не определяется, хотя все файлы импортированы
скрины как решилась проблема.

Очистить поток std::stringstream
Вызываю функцию и в ней в поток инициализирую строку lеftPPF, далее вызываю повторно функцию и иниц-я проводится еще раз, и в потоке...

10
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
18.01.2013, 10:25
C++
1
2
ss.str("");
ss.clear();
2
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
18.01.2013, 10:34  [ТС]
Спасибо!
Тоже об этом думал...
Вот может кто знает что происходит в потоке и разжуёт новичку...
Почему к примеру при clear() в потоки остаются данные и что сбрасывается...
А при str("") в поток ничего не запишешь...
Так сказать для глубокого понимания сего действа...
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
18.01.2013, 10:39
если не ошибаюсь, то после str("") поток переходит в ошибочное состояние и естевственно с ним нельзя работать. clear же сбрасывает флаги состояния
0
18.01.2013, 10:55

Не по теме:

Стиль Маяковского в форматировании программного кода о_О

0
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
18.01.2013, 12:02  [ТС]
Цитата Сообщение от Пaтрик Посмотреть сообщение

Не по теме:

Стиль Маяковского в форматировании программного кода о_О

))
Эт не я ... Эт notepad ++...
Поправлять было просто лень...
А он вобще с отступами такую чушь несёт...
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
18.01.2013, 12:18
У меня Notepad++ и все нормально с отступами.
0
_
317 / 151 / 27
Регистрация: 08.10.2011
Сообщений: 432
18.01.2013, 12:53
1. метод clear() не очищает содержимое строки, он сбрасывает флаги ошибок;
2. метод str(...) возвращает / меняет содержимое srting в потоке, он не меняет состояние флагов
3. вот эта штука: "ss >> st" считывает из потока данные до конца и устанавливает флаг eof и теперь в поток нельзя ничего записать. Выход: вам перед строкой 29 надо вбить вот это: ss.clear();

Как-то так
1
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
18.01.2013, 12:54  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
У меня Notepad++ и все нормально с отступами.
Просто получается такая фигня у меня...
Я привык писать в простом текстовом консольном редакторе,
И отступы проставляю сам уже на автомате...
А в нотпаде один раз поставил и до следующего блока...
Вот и получается такая иерархия у меня...
Я на первой строке поставил отступ, он запомнил.
На вторую строку перешёл он поставил отступ, и я на автомате поставил и дальше код стучу.
На третьей он поставил два смотря на строку выше, и я автоматом опять воткнул один...
Вобщем не приучен я к этим плюшкам...
А потом уже поправлять всё лень...
0
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
18.01.2013, 13:01  [ТС]
Цитата Сообщение от ya_noob Посмотреть сообщение
1. метод clear() не очищает содержимое строки, он сбрасывает флаги ошибок;
2. метод str(...) возвращает / меняет содержимое srting в потоке, он не меняет состояние флагов
3. вот эта штука: "ss >> st" считывает из потока данные до конца и устанавливает флаг eof и теперь в поток нельзя ничего записать. Выход: вам перед строкой 29 надо вбить вот это: ss.clear();

Как-то так
Спс!
За п3 в особенности.
Не знал что после считывания туда eof пихается.
0
Majorrr
21.03.2013, 18:06
Спасибо за исчерпывающую и полезную информацию.

Не по теме:

А оформление кода у вас действительно :good::rofl:

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.03.2013, 18:06
Помогаю со студенческими работами здесь

Ещё раз про сокеты
Вернулся к вопросу о создании сокет сервера Вот взял примерчик из сети // set some variables $host = “192.168.1.99”; $port =...

еще раз про e-mail
Добрый день Вот какое дело: мне нужно текст, содержащийся в Memo или в ReachEdit отправить по электронной почте. В короткой...

Еще раз про Фибоначчи.
Последовательность чисел задается рекуррентным отношением. Найти a) n – член последовательности; б) сумму n членов последовательности ...

Еще раз про аплоад
Попробуйте использовать &quot;Pure ASP File Upload&quot; http://www.asp101.com/articles/jacob/scriptupload.asp Не надо никаких dll, все просто...

Еще раз про бан
сайт globalmp3.ru трафик с yandex резко упал http://www.liveinternet.ru/stat/globalmp3.ru/ Сайт в поиск можно добавить! ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru