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 );  (deprecated in C++98)
					  (removed in C++26)

	If  the  stream  is using a dynamically-allocated array for output, dis-
     ables (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, additional
     output to a
	frozen	stream may be truncated once it reaches the end of the allocated
     buffer.

Parameters
	flag - desired status

Return value
	(none)

Example
     // Run this code

      #include <iostream>
      #include <strstream>

      int main()
      {
	  std::strstream dyn; // dynamically-allocated output buffer
	  dyn << "Test: " << 1.23; // note: no std::ends to demonstrate  append-
     ing
	  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  destructor
     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  destructor
     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 	   2024.06.10	       std::strstream::freeze(3)

home | help