std::basic_istringstream::str - cppreference.com

##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::basic_istringstream::str

From cppreference.com
< cpp‎ | io‎ | basic istringstream

[edit template]

std::basic_string<CharT,Traits,Allocator> str() const; | (1) |
void str(const std::basic_string<CharT,Traits,Allocator>& new_str); | (2) |

Manages the contents of the underlying string object.

1) Returns a copy of the underlying string as if by calling rdbuf()->str().

2) Replaces the contents of the underlying string as if by calling rdbuf()->str(new_str).

### [edit] Parameters

new_str | - | new contents of the underlying string

### [edit] Return value

1) a copy of the underlying string object.

2) (none)

### [edit] Notes

The copy of the underlying string returned by `str` is a temporary object that will be destructed at the end of the expression, so directly calling c_str() on the result of str() (for example in auto *ptr = out.str().c_str();) results in a dangling pointer.

### [edit] Example

Run this code

    #include <sstream>
    #include <iostream>
    int main()
    {
        int n;

        std::istringstream in;  // could also use in("1 2")
        in.str("1 2");
        in >> n;
        std::cout << "after reading the first int from \"1 2\", the int is "
                  << n << ", str() = \"" << in.str() << "\"\n";

        std::ostringstream out("1 2");
        out << 3;
        std::cout << "after writing the int '3' to output stream \"1 2\""
                  << ", str() = \"" << out.str() << "\"\n";

        std::ostringstream ate("1 2", std::ios_base::ate);
        ate << 3;
        std::cout << "after writing the int '3' to append stream \"1 2\""
                  << ", str() = \"" << ate.str() << "\"\n";
    }

Output:

    after reading the first int from "1 2", the int is 1, str() = "1 2"
    after writing the int '3' to output stream "1 2", str() = "3 2"
    after writing the int '3' to append stream "1 2", str() = "1 23"

### [edit] See also

str | replaces or obtains a copy of the associated character string (public member function of `std::basic_stringbuf`) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_istringstream/str&oldid=50846"