------- Comment #1 from pcarlini at suse dot de 2007-04-03 09:20 ------- (In reply to comment #0) > the output changes to: 123de. So the initialization string gets overwritten > instead of appending the data.
And this is the correct behavior, which you can see also in many other implementations. Inserting name.seekp(0, ios::end); helps, but > only for compiler version 4.0, not for 4.1 (at least I think so, I couldn't > test this enough ATM). It helps on any recent GCC at least, gcc4.1.1, current 4.2 pre, mainline. > Now trying to get the right behaviour by using stringstream name("abcde", > ios::app); or stringstream name("abcde", ios::ate); leads to another > interesting output: abcde. The input gets completely ignored. In this case, passing only ios::app or whatelse, you are not telling at all the stream whether you want to write or read. ios::out | ios::app works. Really, there is nothing to fix here. One last remark: the ultimate reference for the behavior which is implemented is the ISO C++03 Standard (+ any implemented DR resolution), therefore always confer to it in case of doubt about minute details, not books or manuals. -- pcarlini at suse dot de changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Component|c++ |libstdc++ Resolution| |INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31456