std::basic_ostringstream::basic_ostringstream(3)

NAME
std::basic_ostringstream::basic_ostringstream - std::basic_ostringstream::basic_ostringstream

Synopsis
   basic_ostringstream() (1) (since
   : basic_ostringstream(std::ios_base::out) { } C++11)
   explicit basic_ostringstream( std::ios_base::openmode mode = (until
   std::ios_base::out ); C++11)
   explicit basic_ostringstream( std::ios_base::openmode mode ); (since
                        C++11)
   explicit basic_ostringstream( const
   std::basic_string<CharT,Traits,Allocator>& str, (3)
   std::ios_base::openmode mode = std::ios_base::out );
   basic_ostringstream( basic_ostringstream&& other ); (4) (since
                        C++11)
   basic_ostringstream( std::ios_base::openmode mode, const (5) (since
   Allocator& a ); C++20)
   explicit basic_ostringstream( (since
   std::basic_string<CharT,Traits,Allocator>&& str, (6) C++20)
   std::ios_base::openmode mode = std::ios_base::out );
   template<class SAlloc>
   basic_ostringstream( const (2) (since
   std::basic_string<CharT,Traits,SAlloc>& str, (7) C++20)
   const Allocator& a )
   : basic_ostringstream(str, std::ios_base::out, a) { }
   template<class SAlloc>
   basic_ostringstream( const (8) (since
   std::basic_string<CharT,Traits,SAlloc>& str, C++20)
   std::ios_base::openmode mode, const Allocator& a );
   template<class SAlloc>
   explicit basic_ostringstream( const (9) (since
   std::basic_string<CharT,Traits,SAlloc>& str, C++20)
   std::ios_base::openmode mode = std::ios_base::out );
   Constructs new string stream.
   1) Default constructor. Constructs new underlying string device with the default
   open mode
   2) Constructs new underlying string device. The underlying basic_stringbuf object is
   constructed as basic_stringbuf<Char,Traits,Allocator>(mode | std::ios_base::out).
   3) Uses a copy of str as initial contents of the underlying string device. The
   underlying basic_stringbuf object is constructed as
   basic_stringbuf<Char,Traits,Allocator>(str, mode | std::ios_base::out).
   4) Move constructor. Constructs the string stream with the state of other using move
   semantics.
   5) Constructs new underlying string device. The underlying basic_stringbuf object is
   constructed as basic_stringbuf<Char,Traits,Allocator>(mode | std::ios_base::out, a).
   6) Move-construct the contents of the underlying string device with str. The
   underlying basic_stringbuf object is constructed as
   basic_stringbuf<Char,Traits,Allocator>(std::move(str), mode | std::ios_base::out).
   7) Constructs new underlying string device. The underlying basic_stringbuf object is
   constructed as basic_stringbuf<Char,Traits,Allocator>(str, std::ios_base::out, a).
   8) Constructs new underlying string device. The underlying basic_stringbuf object is
   constructed as basic_stringbuf<Char,Traits,Allocator>(str, mode |
   std::ios_base::out, a).
   9) Constructs new underlying string device. The underlying basic_stringbuf object is
   constructed as basic_stringbuf<Char,Traits,Allocator>(str, mode |
   std::ios_base::out). This overload participates in overload resolution only if
   SAlloc and Allocator are not the same type.

Parameters
   str - string to use as initial contents of the string stream
   a - allocator used for allocating the contents of the string stream
           specifies stream open mode. It is bitmask type, the following constants are
           defined:
           Constant Explanation
   mode - app seek to the end of stream before each write
           binary open in binary mode
           in open for reading
           out open for writing
           trunc discard the contents of the stream when opening
           ate seek to the end of stream immediately after open
   other - another string stream to use as source

Notes
   Construction of one-off basic_ostringstream objects in a tight loop, such as when
   used for string conversion, may be significantly more costly than calling str to
   reuse the same object.

Example
// Run this code
 #include <iostream>
 #include <sstream>
 int main()
 {
     // default constructor (input/output stream)
     std::stringstream buf1;
     buf1 << 7;
     int n = 0;
     buf1 >> n;
     std::cout << "buf1 = " << buf1.str() << " n = " << n << '\n';
     // input stream
     std::istringstream inbuf("-10");
     inbuf >> n;
     std::cout << "n = " << n << '\n';
     // output stream in append mode (C++11)
     std::ostringstream buf2("test", std::ios_base::ate);
     buf2 << '1';
     std::cout << buf2.str() << '\n';
 }

Output:
 buf1 = 7 n = 7
 n = -10
 test1
  Defect reports
   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.
     DR Applied to Behavior as published Correct behavior
   P0935R0 C++11 default constructor was explicit made implicit

See also
   str gets or sets the contents of underlying string device object
                 (public member function)
                 constructs a basic_stringbuf object
   constructor (public member function of
                 std::basic_stringbuf<CharT,Traits,Allocator>)