The first form (1) returns a basic_string object with a copy of the current contents of the stream.
The second form (2) sets str as the contents of the stream, discarding any previous contents. The object preserves its open mode: if this includes ios_base::ate, the writing position is moved to the end of the new sequence.
A basic_string object with the same template parameters (charT, traits and Alloc), whose content is copied.
Member types char_type, traits_type and allocator_type are the class template parameters of basic_ostringstream.
Return Value
For (1), a basic_string object with a copy of the current contents in the stream buffer.
Member types char_type, traits_type and allocator_type are the class template parameters of basic_ostringstream.
Example
1 2 3 4 5 6 7 8 9 10 11 12
// ostringstream::rdbuf
#include <string> // std::string
#include <iostream> // std::cout
#include <sstream> // std::ostringstream
int main () {
std::ostringstream oss;
oss << "One hundred and one: " << 101;
std::string s = oss.str();
std::cout << s << '\n';
return 0;
}
One hundred and one: 101
Data races
Accesses (1) or modifies (2) the basic_ostringstream object.
Concurrent access to the same object may cause data races.
Exception safety
Basic guarantee: if an exception is thrown, the object is in a valid state.