Здравствуйте, Аноним, Вы писали:
А>Коллеги, приветствую
А>Если нужно отформатировать в строку большой объем данных с помощью 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() байт