| std::basic_stringstream::basic_stringstream(3) | C++ Standard Libary | std::basic_stringstream::basic_stringstream(3) | 
NAME¶
std::basic_stringstream::basic_stringstream - std::basic_stringstream::basic_stringstream
Synopsis¶
 explicit basic_stringstream( std::ios_base::openmode mode =
  
   std::ios_base::in | (until C++11)
  
   std::ios_base::out );
  
   explicit basic_stringstream( std::ios_base::openmode mode ); (since
    C++11)
  
   basic_stringstream()
  
   : basic_stringstream(std::ios_base::in | (2) (since C++11)
  
   std::ios_base::out) {}
  
   explicit basic_stringstream
  
   ( const std::basic_string<CharT, Traits, Allocator>& str,
    (3)
  
   std::ios_base::openmode mode =
  
   std::ios_base::in | std::ios_base::out );
  
   explicit basic_stringstream
  
   ( std::basic_string<CharT, Traits, Allocator>&& str, (4)
    (since C++20)
  
   std::ios_base::openmode mode =
  
   std::ios_base::in | std::ios_base::out );
  
   basic_stringstream( std::ios_base::openmode mode, const (5) (since
    C++20)
  
   Allocator& a );
  
   template< class SAlloc >
  
   basic_stringstream( const std::basic_string<CharT, Traits,
  
   SAlloc>& str, (6) (since C++20)
  
   std::ios_base::openmode mode, const
  
   Allocator& a );
  
   template< class SAlloc >
  
   (1)
  
   basic_stringstream( const std::basic_string<CharT, Traits,
  
   SAlloc>& str, (7) (since C++20)
  
   const Allocator& a )
  
   : basic_stringstream(str, std::ios_base::in |
  
   std::ios_base::out, a) {}
  
   template< class SAlloc >
  
   explicit basic_stringstream
  
   ( const std::basic_string<CharT, Traits, SAlloc>& str, (8)
    (since C++20)
  
   std::ios_base::openmode mode =
  
   std::ios_base::in | std::ios_base::out );
  
   template< class StringViewLike >
  
   explicit basic_stringstream
  
   ( const StringViewLike& t, (9) (since C++26)
  
   std::ios_base::openmode mode =
  
   std::ios_base::in | std::ios_base::out );
  
   template< class StringViewLike >
  
   basic_stringstream( const StringViewLike& t, (10) (since
  C++26)
  
   std::ios_base::openmode mode, const
  
   Allocator& a );
  
   template< class StringViewLike >
  
   basic_stringstream( const StringViewLike& t, const Allocator&
    (11) (since C++26)
  
   a );
  
   basic_stringstream( basic_stringstream&& other ); (12)
    (since C++11)
  
   Constructs new string stream.
  
   Given
  
   * base_type as std::basic_iostream<CharT, Traits>, and
  
   * buf_type as std::basic_stringbuf<CharT, Traits, Allocator>,
  
   the std::basic_iostream base and the exposition-only data member sb are
    initialized
  
   as follows.
  
   Over std::basic_iostream base sb
  
   load
  
   (1) buf_type(mode)
  
   (2) buf_type(std::ios_base::in |
  
   std::ios_base::out)
  
   (3) buf_type(str, mode)
  
   (4) base_type(std::addressof(sb))^[1] buf_type(std::move(str), mode)
  
   (5) buf_type(mode, a)
  
   (6) buf_type(str, mode, a)
  
   (7) buf_type(str, std::ios_base::in |
  
   std::ios_base::out, a)
  
   (8) buf_type(str, mode)
  
   (9) {t, mode, Allocator()}
  
   (10) std::addressof(sb) {t, mode, a}
  
   (11) {t, std::ios_base::in |
  
   std::ios_base::out, a}
  
   (12) move constructed from other's move constructed from other.sb
  
   std::basic_iostream base
  
   1. ↑ The std::basic_iostream base was intialized with
    base_type(&sb) (for overloads
  
   (1,3)) until C++11.
  
   8) This overload participates in overload resolution only if
    std::is_same_v<SAlloc,
  
   Allocator> is false.
  
   9-11) These overloads participate in overload resolution only if
  
   std::is_convertible_v<const StringViewLike&,
    std::basic_string_view<CharT, Traits>>
  
   is true.
Parameters¶
 str - string to use as initial contents of the string stream
  
   t - an object (convertible to std::basic_string_view) 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 a BitmaskType, the following constants are
  
   defined:
  
   Constant Explanation
  
   app seek to the end of stream before each write
  
   mode - 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
  
   noreplace (C++23) open in exclusive mode
  
   other - another string stream to use as source
Notes¶
 Construction of one-off basic_stringstream 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.
  
   Feature-test macro Value Std Feature
  
   __cpp_lib_sstream_from_string_view 202306L (C++26) Interfacing
    std::stringstreams
  
   with std::string_view, (9-11)
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 the 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>)
| 2024.06.10 | http://cppreference.com |