Я зализываю свои раны из Ошибка памяти с std: ostringstream и -std = c ++ 11?, и у меня есть связанный с этим вопрос.
Если следующее возвращает временное значение, так что reserve
не действует, а char*
недействителен:
ostringstream oss;
oss.str().reserve(96);
// populate oss
const char* ptr = oss.str().c_str();
// do something with ptr
Тогда как следующее очищает ostringstream
(из Как повторно использовать ostringstream?):
oss.clear(); oss.str("");
Я понимаю, что clear()
сбросит флаги потока; но как я теперь понимаю, str("")
будет работать с временной, а не с базовой строкой.
Так как же str("")
сбросить поток?