The classes istrstream,
ostrstream, and strstream
provide some additional features for reading and writing strings in
memory---both static strings, and dynamically allocated strings. The
underlying class strstreambase
provides some features common to
all three; strstreambuf underlies that in turn.

istrstream with an existing
static string starting at str, of size size. If you do not
specify size, the string is treated as a NUL terminated string.

ifstream::ifstream; if you do not specify
one, the new stream is simply open for output, with mode ios::out.
ostrstream.
ostrstream. Implies
`ostrstream::freeze()'.
Note that if you want the string to be nul-terminated, you must do that yourself (perhaps by writing ends to the stream).
ostrstream is not to change dynamically; while frozen,
it will not be reallocated if it needs more space, and it will not be
deallocated when the ostrstream is destroyed. Use
`freeze(1)' if you refer to the string as a pointer after creating
it via ostrstream facilities.
`freeze(0)' cancels this declaration, allowing a dynamically
allocated string to be freed when its ostrstream is destroyed.
If this ostrstream is already static---that is, if it was created
to manage an existing statically allocated string---freeze is
unnecessary, and has no effect.
freeze(1) is in effect for this string.

strstreambuf.
