Ответ 1
Нет никаких оснований ожидать, что функции добавления std::string
будут медленнее, чем stringstream
вставки stringstream
. Обычно std::string
будет не более чем возможным распределением/копированием памяти плюс копирование данных в память. stringstream
имеет дело с такими вещами, как локали и т.д., даже для базовых вызовов write
.
Кроме того, std::string
предоставляет способы минимизировать или устранить что-либо, кроме первого выделения памяти. Если вы reserve
достаточно места, каждая вставка будет немного больше чем memcpy
. Это не совсем возможно с stringstream
.
Даже если это было быстрее, чем функции добавления std::string
, вам все равно придется скопировать строку из stringstream
чтобы что-то с ней сделать. Так что еще одно выделение + копия, которая вам не понадобится с помощью std::string
. Хотя, по крайней мере, С++ 20 выглядит готовым для устранения этой конкретной потребности.
Вы должны использовать std::stringstream
если вам нужно форматирование, а не только для склеивания некоторых строк.