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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::strstreambuf::str -	std::strstreambuf::str

Synopsis
	  char*	str() const;

	  Calls	 freeze(),  then  returns  a  copy of start pointer of the get
       area,
	  std::streambuf::eback().

	  The start of the get area, for all writeable	std::strstreambuf  ob-
       jects constructed
	  through  the interface provided by std::strstream, is	also the start
       of the put area.

Parameters
	  (none)

Return value
	  A copy of eback(), which may be a null pointer.

Notes
	  This function	is typically called through the	std::strstream	inter-
       face.

	  The  call  to	 freeze() guarantees that the returned pointer remains
       valid until the
	  next explicit	call to	freeze(false): otherwise (on a dynamic buffer)
       any output
	  operation could trigger buffer reallocation which  would  invalidate
       the pointer. It
	  also	causes	a  memory leak in the destructor of std::strstreambuf,
       unless
	  freeze(false)	is called before the buffer (or,  more	commonly,  the
       std::strstream
	  that manages it) is destroyed.

Example
       // Run this code

	#include <strstream>
	#include <iostream>

	int main()
	{
	    std::strstream dyn;	// dynamically-allocated read/write buffer
	    dyn	<< "Test: " << 1.23 << std::ends;
	    std::strstreambuf* buf = dyn.rdbuf();
	    std::cout << "R/W buffer holds \"" << buf->str() //	or dyn.str()
		      << "\"\n";
	    dyn.freeze(false); // after	calling	.str() on a dynamic strstream

	    char arr[10];
	    std::ostrstream user(arr, 10); // fixed-size write-only buffer
	    buf	= user.rdbuf();
	    user << 1.23 << std::ends;
	    std::cout  <<  "Write-only	buffer	holds  \"" << buf->str() // or
       user.str()
		      << "\"\n";

	    std::istrstream lit("1 2 3"); // fixed-size	read-only buffer
	    buf	= lit.rdbuf();
	    std::cout << "Read-only buffer  holds  \""	<<  buf->str()	//  or
       lit.str()
		      << "\"\n";
	}

Output:
	R/W buffer holds "Test:	1.23"
	Write-only buffer holds	"1.23"
	Read-only buffer holds "1 2 31 2 3"

See also
	  str accesses the output buffer
	      (public member function of std::strstream)
	  str accesses the output buffer
	      (public member function of std::ostrstream)
	  str accesses the output buffer
	      (public member function of std::istrstream)

http://cppreference.com		  2022.07.31	     std::strstreambuf::str(3)

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

home | help