Apache C++ Standard Library Reference Guide

## strstream

Library: Input/output

                               basic_ostream
         strstream  basic_iostream          basic_ios  ios_base
                               basic_istream

- Local Index
- Summary
- Synopsis
- Description
- Interface
- Member Types
- Constructors
- Destructors
- Member Functions
- Example
- See Also
- Standards Conformance

### Local Index

#### Members

char_type freeze() int_type | off_type pcount() pos_type | rdbuf() str() strstream() | traits_type ~strstream()

### Summary

Class that reads and writes to an array in memory

### Synopsis

    #include <strstream>

    namespace std {
      class strstream;
    }

### Description

The class strstream reads and writes to an array in memory. It uses a private strstreambuf object to control the associated array. It inherits from basic_iostream and therefore can use all the formatted and unformatted output and input functions.

> NOTE -- This is a deprecated feature and might not be available in future versions.

### Interface

    namespace std {

      class strstream
      : public basic_iostream<char> {

      public:

      typedef char                            char_type;
      typedef char_traits<char_type>          traits_type;
      typedef typename traits_type::int_type  int_type;
      typedef typename traits_type::pos_type  pos_type;
      typedef typename traits_type::off_type  off_type;

      strstream();
      strstream(char *s, int n,
                ios_base::openmode =
                ios_base::out | ios_base::in);

      void freeze(int freezefl = 1);
      int pcount() const;

      virtual ~strstream();
      strstreambuf *rdbuf() const;

      char *str();

      };
    }

### Member Types

    char_type

The type `char_type` is a synonym of type `char`.

    int_type

The type `int_type` is a synonym of type`traits_type::in_type`.

    off_type

The type `off_type` is a synonym of type `traits_type::off_type`.

    pos_type

The type `pos_type` is a synonym of type `traits_type::pos_type`.

    traits_type

The type `traits_type` is a synonym of type `char_traits<char>`.

### Constructors

    strstream();

Constructs an object of class strstream, initializing the base class basic_iostream with the associated strstreambuf object. The strstreambuf object is initialized by calling its default constructor `strstreambuf()`.

    strstream(char* s, int n, ios_base::openmode
              mode = ios_base::out | ios_base::in);

Constructs an object of class strstream, initializing the base class basic_iostream with the associated strstreambuf object. The strstreambuf object is initialized by calling one of two constructors:

- If `mode & app == 0`, calls `strstreambuf(s,n,s)`

- Otherwise calls `strstreambuf(s,n,s + ::strlen(s))`

### Destructors

    virtual ~strstream();

Destroys an object of class strstream.

### Member Functions

    void
    freeze(bool freezefl = true);

Calls `rdbuf()->freeze(freezefl)`.

    int
    pcount() const;

Returns `rdbuf()->pcount()`.

    strstreambuf*
    rdbuf() const;

Returns a pointer to the strstreambuf object associated with the stream.

    char*
    str();

Returns `rdbuf()->str()`.

### Example

    //
    //  strstream.cpp
    //

    #include <iostream>    // for cout, endl
    #include <strstream>   // for sstream

    int main ()
    {
        // create a bi-directional strstream object
        std::strstream inout;

        // write out three lines to the stream
        inout << "Dieses ist die Geschichte eines Mannes.\n"
              << "C'est l'histoire d'un homme.\n"
              << "This is the story of a man." << std::endl;

        char line [80];

        // extract the first line
        inout.getline (line, sizeof line);

        // output the first line to stdout
        std::cout << "\nDeutsch:\n" << line;

        // extract the second line
        inout.getline (line, sizeof line);

        // output the second line to stdout
        std::cout << "\nFrançais:\n" << line;

        // extract the third line
        inout.getline (line, sizeof line);

        // output the third line to stdout
        std::cout << "\nEnglish:\n" << line << std::endl;

        // output the contents of the stream object to stdout
        std::cout << std::endl << inout.str () << std::endl;

        return 0;
    }

    Program Output:

    Deutsch:
    Dieses ist die Geschichte eines Mannes.
    Francais:
    C'est l'histoire d'un homme.
    English:
    This is the story of a man.

    Dieses ist die Geschichte eines Mannes.
    C'est l'histoire d'un homme.
    This is the story of a man.

### See Also

char_traits, ios_base, basic_ios, strstreambuf, istrstream, ostrstream

### Standards Conformance

Deprecated. See ISO/IEC 14882:1998 -- International Standard for Information Systems --Programming Language C++, Annex D Compatibility features Section D.7.4