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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::ostrstream::freeze - std::ostrstream::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 os-
       trstream	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::ostrstream 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::ostrstream 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::ostrstream::freeze(3)

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

home | help