The GNU C++ Iostream Library - Strings

Node: Strings Prev: Files Up: Files and Strings

Reading and writing in memory

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.

Constructor istrstream::istrstream (const char* str [, int size])
Associate the new input string class 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.

Constructor ostrstream::ostrstream ()
Create a new stream for output to a dynamically managed string, which will grow as needed.

Constructor ostrstream::ostrstream (char* str, int size [,int mode])
A new stream for output to a statically defined string of length size, starting at str. You may optionally specify one of the modes described for ifstream::ifstream ; if you do not specify one, the new stream is simply open for output, with mode ios::out .

Method int ostrstream::pcount ()
Report the current length of the string associated with this ostrstream .

Method char* ostrstream::str ()
A pointer to the string managed by this 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).

Method void ostrstream::freeze ([int n])
If n is nonzero (the default), declare that the string associated with this 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.

Method int ostrstream::frozen ()
Test whether freeze(1) is in effect for this string.

Method strstreambuf* strstreambase::rdbuf ()
A pointer to the underlying strstreambuf .


Up: Files and Strings