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

FreeBSD Manual Pages

  
 
  

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

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

Synopsis
	  void freeze(bool flag	= true);

	  If  the  stream  is  using a dynamically-allocated array for output,
       disables	(flag ==
	  true)	or enables (flag == false)  automatic  allocation/deallocation
       of the buffer.
	  Effectively calls rdbuf()->freeze(flag)

Notes
	  After	 a call	to str(), dynamic streams become frozen	automatically.
       A call to
	  freeze(false)	is required before exiting the	scope  in  which  this
       strstream object
	  was  created.	otherwise the destructor will leak memory. Also, addi-
       tional output to	a
	  frozen stream	may be truncated once it reaches the end of the	 allo-
       cated buffer.

Parameters
	  flag - desired status

Return value
	  (none)

Example
       // Run this code

	#include <strstream>
	#include <iostream>

	int main()
	{
	    std::strstream dyn;	// dynamically-allocated output	buffer
	    dyn	 << "Test: " <<	1.23; // note: no std::ends to demonstrate ap-
       pending
	    std::cout << "The output stream contains \"";
	    std::cout.write(dyn.str(), dyn.pcount()) <<	"\"\n";
	    // the stream is now frozen	due to str()
	    dyn	<< " More text"; // output to a	frozen stream may be truncated
	    std::cout << "The output stream contains \"";
	    std::cout.write(dyn.str(), dyn.pcount()) <<	"\"\n";
	    dyn.freeze(false); // freeze(false)	must be	 called	 or  the   de-
       structor	will leak

	    std::strstream dyn2; // dynamically-allocated output buffer
	    dyn2 << "Test: " <<	1.23; // note: no std::ends
	    std::cout << "The output stream contains \"";
	    std::cout.write(dyn2.str(),	dyn2.pcount()) << "\"\n";
	    dyn2.freeze(false);	  // unfreeze the stream after str()
	    dyn2 << " More text" << std::ends; // output will not be truncated
       (buffer grows)
	    std::cout  <<  "The	 output	 stream	 contains \"" << dyn2.str() <<
       "\"\n";
	    dyn2.freeze(false);	// freeze(false) must be called	 or  the   de-
       structor	will leak
	}

Possible output:
	The output stream contains "Test: 1.23"
	The output stream contains "Test: 1.23 More "
	The output stream contains "Test: 1.23"
	The output stream contains "Test: 1.23 More text"

See also
	  freeze sets/clears the frozen	state of the buffer
		 (public member	function of std::strstreambuf)

http://cppreference.com		  2022.07.31	     std::strstream::freeze(3)

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

home | help