The GNU C++ Iostream Library



4.2: 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.


4.2.1: String (In-Memory) Input



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.

4.2.2: String (In-Memory) Output



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.

4.2.3: String (In-Memory) Stream Base



Method:  strstreambuf* strstreambase::rdbuf ()

A pointer to the underlying strstreambuf.


Translated 02/24/96 by Rance Necaise. Original texi file by Bothner and Pesch.