Поток строк удаляет предыдущее значение

Почему программа выводит 12, а не 112?

#include <sstream>
#include <iostream>

int main() {
  std::stringstream ss("1");
  std::cout << ss.str();
  ss << "2";
  std::cout << ss.str();
}

Ответы (1 шт):

Автор решения: user7860670

Для сохранения начального строкового значения для дозаписи в поток при вызове конструктора следует указывать режим дописывания в конец app или ate. По-умолчанию он использует режим перезаписи с начала (in out):

::std::stringstream ss
{
   "1"
,  ::std::ios_base::in bitor ::std::ios_base::out bitor ::std::ios_base::app
};

https://godbolt.org/z/edbnW8

→ Ссылка