public member function
<sstream>

std::ostringstream::ostringstream

default (1)
explicit ostringstream (ios_base::openmode which = ios_base::out);
initialization (2)
explicit ostringstream (const string& str,                        ios_base::openmode which = ios_base::out);
default (1)
explicit ostringstream (ios_base::openmode which = ios_base::out);
initialization (2)
explicit ostringstream (const string& str,                        ios_base::openmode which = ios_base::out);
copy (3)
ostringstream (const ostringstream&) = delete;
move (4)
ostringstream (ostringstream&& x);
Construct an object and optionally initialize its content
Constructs an ostringstream object:

(1) empty constructor (default constructor)
Constructs an ostringstream object with an empty sequence as content.
Internally, its ostream base constructor is passed a pointer to a stringbuf object constructed with an argument based on which.
(2) initialization constructor
Constructs a ostringstream object with a copy of str as content.
Internally, its ostream base constructor is passed a pointer to a stringbuf object constructed with values based on str and which as arguments.
(3) copy constructor (deleted)
Deleted (no copy constructor).
(4) move constructor
Acquires the contents of x.
First, the function move-constructs both its base ostream class from x and a stringbuf object from x's internal streambuf object, and then associates them by calling member set_rdbuf.
x is left in an unspecified but valid state.
It is unspecified whether the sequence controlled by the internal stringbuf object is the one in x before the call, or a copy of it. In any case, both objects have internal string buffers that use independent sequences after the call.
The internal stringbuf object has at least the same duration as the ostringstream object.

Parameters

str
A string object, whose content is copied.
x
An ostringstream object, whose value is moved.
which
Open mode: Access given by the internal stringbuf object to its internal sequence of characters. It is an object of member type openmode for which any combination of the following member values is significant:
member constantstands foraccess
ios_base::in*inputThe sequence supports input operations.
ios_base::outoutputThe sequence supports output operations.
Other values of type ios_base::openmode may also be specified, although whether they have an effect on ostringstream objects depends on the library implementation.
member constantstands foraccess
ios_base::in*inputThe sequence supports input operations.
ios_base::outoutputThe sequence supports output operations.
ios_base::ateat endThe writing position is at the end after construction, and after every time the content is reset with member str.
Other values of type ios_base::openmode (such as ios_base::app) may also be specified, although whether they have an effect on ostringstream objects depends on the library implementation.
* ios_base::out is always set for ostringstream objects (even if explicitly not set in argument which).
Note that even though ostringstream is an output stream, its internal stringbuf object may be set to also support input operations.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// ostringstream constructor
#include <iostream>     // std::cout, std::ios
#include <sstream>      // std::ostringstream

int main () {
  std::ostringstream foo;                            // out
  std::ostringstream bar (std::ostringstream::ate);  // out|ate

  foo.str("Test string");
  bar.str("Test string");

  foo << 101;
  bar << 101;

  std::cout << foo.str() << '\n';
  std::cout << bar.str() << '\n';
  return 0;
}

Output:
101t string
Test string101


Data races

The move constructor (4) modifies x.

Exception safety

Strong guarantee: if an exception is thrown, there are no side effects.

See also