home | help
std::strstream::strstream(3)   C++ Standard Libary  std::strstream::strstream(3)

NAME
     std::strstream::strstream - std::strstream::strstream

Synopsis
	strstream();						    (1)  (depre-
     cated in C++98)
								       (removed
     in C++26)
	strstream( char* s, int n, std::ios_base::openmode mode  =	 (depre-
     cated in C++98)
				       std::ios_base::in  |	    (2) (removed
     in C++26)
	std::ios_base::out );

	Constructs new input/output strstream and its underlying std::strstream-
     buf.

	1) Default-constructs the underlying std::strstreambuf, which creates  a
     dynamically
	growing  buffer,  and initializes the base class with the address of the
     strstreambuf
	member.
	2) Initialized the  base  class  with  the  address  of  the  underlying
     std::strstreambuf
	member,  which	is  initialized in one of the two possible ways, both of
     which use a
	user-provided fixed-size array:
	a) if (mode & app) == 0 (the app bit is not set in mode), constructs the
     buffer by
	calling strstreambuf(s, n, s). The behavior is undefined  if  there  are
     less than n
	elements in the array whose first element is pointed to by s.
	b)  if	(mode  &  app) != 0 (the app bit is set in mode), constructs the
     buffer by
	calling strstreambuf(s, n, s + std::strlen(s)). The  behavior  is  unde-
     fined if there
	are  less than n elements in the array whose first element is pointed to
     by s or if
	the array does not contain a valid null-terminated character sequence.

Parameters
	s    - char array to use as the output buffer
	n    - size of the array to be used for output
	       specifies stream open mode. It is a bitmask type,  the  following
     constants are
	       defined (although only app is used):

	       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

Example
     // Run this code

      #include <iostream>
      #include <string>
      #include <strstream>

      int main()
      {
	  // dynamic buffer
	  std::strstream s1;
	  s1 << 1 << ' ' << 3.14 << " example" << std::ends;
	  std::cout << "Buffer holds: '" << s1.str() << "'\n";
	  s1.freeze(false);

	  int n;
	  double d;
	  std::string w;
	  s1 >> n >> d >> w;
	  std::cout << "Read back: n = " << n
		    << ", d = " << d
		    << ", w = '" << w << "'\n";

	  // static buffer
	  char arr[20] = "-1 -3.14 ";
	  std::strstream s2(arr, sizeof arr, std::ios_base::app);
	  s2 << "another" << std::ends;
	  std::cout << "Buffer holds: '" << s2.str() << "'\n";
	  s2 >> n >> d >> w;
	  std::cout << "Read back: n = " << n
		    << ", d = " << d
		    << ", w = '" << w << "'\n";
      }

Output:
      Buffer holds: '1 3.14 example'
      Read back: n = 1, d = 3.14, w = 'example'
      Buffer holds: '-1 -3.14 another'
      Read back: n = -1, d = -3.14, w = 'another'

	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
			   overload (2) only considered the  case      considers
     cases (mode &
	LWG 115 C++98	   mode & app == 0 (== has higher precedence app) == 0
			   than &)				     and (mode &
     app) != 0

See also
	constructor   constructs a strstreambuf object
		      (public member function of std::strstreambuf)
	constructor   constructs an istrstream object, optionally allocating the
     buffer
		      (public member function of std::istrstream)
	constructor   constructs an ostrstream object, optionally allocating the
     buffer
		      (public member function of std::ostrstream)

http://cppreference.com 	   2024.06.10	    std::strstream::strstream(3)

home | help