Re: Использование внешнего буфера для stringstream
От: MaximE Великобритания  
Дата: 14.05.12 19:19
Оценка: 4 (1)
Здравствуйте, Аноним, Вы писали:

А>Коллеги, приветствую


А>Если нужно отформатировать в строку большой объем данных с помощью stringstream, это приводит к постоянным реаллокациям.

А>Т.к. stringstream.str() возвращает копию строки, так что reserve() сделать не получится.

А>Есть ли путь (кроме конечно реализации своей версии stringstream) резервировать данные под буфер при создании или в идеале использовать внешний статический массив (пускай пока очищать его придется вручную).


char buf[0x1000];
std::stringstream ss;
ss.rdbuf()->pubsetbuf(buf, sizeof buf);
ss << "abc"; // пишется в buf
// ...
// скопировать buf в строку
std::string buf_contents(buf, ss.tellg()); // в buf записали tellg() байт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.