str

Syntax:

    #include <sstream>
    void str( const string& s );
    string str();

The function str() can be used in two ways. First, it can be used to get a copy of the string that is being manipulated by the current stream string. This is most useful with output strings. For example:

    ostringstream stream1;
    stream1 << "Testing!" << endl;
    cout << stream1.str();

Second, str() can be used to copy a string into the stream. This is most useful with input strings. For example:

    istringstream stream1;
    string string1 = "25";
    stream1.str(string1);

N.B.:This leaves the “get” pointer and the “put” pointer set to 0. This can lead to confusing results when initializing a stringstream used for bidirectional operations.

str() is also handy when you need to clear and reset the stream so that it can be reused:

Warning: the member function clear() does *not* erase the content of the underlying string object, it merely clears the state of the ios object, i.e. it executes basic_ios::clear().

    istringstream stream1;
    float num;
 
    // use it once
    string string1 = "25 1 3.235\n1111111\n222222";
    stream1.str(string1);
    while( stream1 >> num ) cout << "num: " << num << endl;  // displays numbers, one per line
 
    // use the same string stream again with str()
    string string2 = "1 2 3 4 5  6 7 8 9 10";
    stream1.clear(); // not what you think!  But still required to clear the stream's IO state
    stream1.str(string2);
 
    while( stream1 >> num ) cout << "num: " << num << endl;  // displays numbers, one per line

Related Topics: rdbuf, C++ I/O Streams