Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > очистить strstream


Автор: keV 17.12.2006, 13:40
Добрый день!

Пожалуйста, помогите со следующей проблемкой.
Есть объект класса std::strstream, в который 
уже было что-то записано. Как снова сделать его пустым?


std::strstream ss;
ss << "aaaaaa";
.... // как-то очистить
ss << "bbbbbb" << ends;

Чтобы ss.str() указывала только на "bbbbbb"

Пробовал 
ss.seekp(0); ss.seekg(0);
Не помогает!

С уважением, Евгений.

Автор: nickless 17.12.2006, 16:04
Код

ss.str("");

Автор: GIK 17.12.2006, 16:14
Цитата

ends;

Кстати, что это такое? Первый раз вижу..... 

Автор: nickless 17.12.2006, 16:18
End of string, т.е. 0

Автор: En_t_end 17.12.2006, 16:28
nickless, 
Цитата(nickless @  17.12.2006,  20:18 Найти цитируемый пост)
End of string, т.е.

В таком случае в результате работы ss << "bbbbbb" << ends;
в ss окажется ИМХО два '\0'.

Автор: Daevaorn 17.12.2006, 16:46
Цитата(En_t_end @  17.12.2006,  17:28 Найти цитируемый пост)
в ss окажется ИМХО два '\0'. 

почему?

Автор: En_t_end 17.12.2006, 18:32
Daevaorn, 
Конструкция "bbbbbb" не означает : 
Код

arraytmp_stack[0] = 'b'
arraytmp_stack[1] = 'b'
...
arraytmp_stack[6] = '\0'

?

Автор: Daevaorn 17.12.2006, 18:41
Цитата(En_t_end @  17.12.2006,  19:32 Найти цитируемый пост)
?

Тогда токая конструкция обречена на бессмыслее?
Код

ss << "bbbbbb" << 1234;

Нетsmile

Автор: keV 17.12.2006, 21:23
Цитата(nickless @ 17.12.2006,  16:04)
Код

ss.str("");

Но метод strstream::str() не имеет аргументов:
char *str();

Автор: nickless 17.12.2006, 21:58
Их 2, перегруженных
Код
void str( string s );
и
string str();

Автор: keV 17.12.2006, 22:34
А, я понял, я-то использую strstream, а нужно stringstream
Тогда и str("") работает!
Большое спасибо, nickless!

Автор: En_t_end 18.12.2006, 08:21
Daevaorn, 
Цитата(Daevaorn @  17.12.2006,  22:41 Найти цитируемый пост)
Нет

Странно, а почему:
Код

ss << "aaaaaa";

Код

char some[] =  "aaaaaa";
strlen(some);

В результате их работы не происходит потеря '\0' ?

Автор: En_t_end 18.12.2006, 09:05
Daevaorn, 
Цитата(Daevaorn @  17.12.2006,  22:41 Найти цитируемый пост)
Тогда токая конструкция обречена на бессмыслее?

Копирование в конец со смещением 0-я ?

Автор: nickless 18.12.2006, 15:47
En_t_end,
Вобще-то stringstream работает со string-ом, а не с char*, а он не использует 0 как ограничение строки.
Даже если в целях оптимизации работы метода c_str() string добавляет 0 в конец буфера, какая разница? Он его точно так же удалит когда надо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)