Здравствуйте. При работе с std::stringstream cтолкнулся с непонятным эффектом:
// ..........................
stringstream& write1()
{
ss << "test1";
return ss;
}
string write2()
{
//toogle breakpoint here
return "end";
}
string write3()
{
//toogle breakpoint here
return "middle";
}
stringstream ss;
int main()
{
write1() << "test2" << write3() << write2();
}
При watch'е из write3() и write2() в потоке видны только данные, записанные через write1(). По идее, на момент вызова write3() в потоке уже должен быть фрагмент "test1test2", но дефакто - этого не происходит. Такое впечатление, что после write1() << складывает данные в какой-то временный буфер, и только после write2() выкидывает их в поток. ss.flush() в write2,3() не дает никакого эффекта.