C++ quiz and strstream
Danila Kutenin
Казалось бы, мы проинициализировали stream строкой "a" и сначала выведем "a", потом добавим к стриму "b" и выведем "ab" и в итоге должно быть "aab", но нет.
stringstream содержит в себе позицию буффера. И при дефолтном конструкторе от строки, он будет нулём.
operator<< перезаписывает следующую позицию в буффере и поэтому во втором cout выведется b
Чтобы это починить, можно написать так:
std::stringstream ss("a", std::ios_base::out|std::ios_base::ate);
Поэтому многими стайлгайдами запрещено использование stringstream.
https://en.cppreference.com/w/cpp/io/basic_stringstream/basic_stringstream