Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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

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

Synopsis
	  strstream();						     (1) (dep-
       recated in C++98)
									 (re-
       moved in	C++26)
	  strstream( char* s, int n, std::ios_base::openmode mode =	 (dep-
       recated in C++98)
					 std::ios_base::in  |	      (2) (re-
       moved in	C++26)
	  std::ios_base::out );

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

	  1)  Default-constructs  the underlying std::strstreambuf, which cre-
       ates 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  un-
       defined 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 se-
       quence.

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 follow-
       ing 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		  Cor-
       rect behavior
			     overload (2) only considered the case     consid-
       ers 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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::strstream::strstream&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help