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

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

Synopsis
	char* str();  (deprecated in C++98)
		      (removed in C++26)

	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 objects
     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 interface.

	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 <iostream>
      #include <strstream>

      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 	   2024.06.10	       std::strstreambuf::str(3)

home | help