home | help
std::basic_...stringstream(3)  C++ Standard Libary std::basic_...stringstream(3)

NAME
     std::basic_stringstream::basic_stringstream  - std::basic_stringstream::ba-
     sic_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. a 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::ba-
     sic_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 ini-
     tial 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  open-
     ing
		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  call-
     ing 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	retroac-
     tively 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 ob-
     ject
		      (public member function)
		      constructs a basic_stringbuf object
	constructor   (public member function of
		      std::basic_stringbuf<CharT,Traits,Allocator>)

http://cppreference.com 	   2024.06.10	   std::basic_...stringstream(3)

home | help