Output string streams are always dynamic. The str() function does not have the functionality of freezing the string stream anymore. Instead, the string returned from str() is a copy of the internal buffer. The string passed to the overload of str() that takes an argument is copied into the internal buffer, not used as the internal buffer. If you need to influence a string stream's internal buffering, you must do it through the pubsetbuf() member function of std::basic_streambuf.
The classes strstream, istrstream, ostrstream, and strstreambuf are deprecated features in the standard iostreams. They are still provided by this implementation of the standard iostreams, but may be omitted in the future when they are removed from the C++ standard.