Namespaces
Variants

std::ostrstream:: freeze

From cppreference.net

void freeze ( bool flag = true ) ;
(obsoleto en C++98)
(eliminado en C++26)

Si el stream está usando un array dinámicamente asignado para salida, desactiva ( flag == true ) o activa ( flag == false ) la asignación/liberación automática del buffer. Efectivamente llama a rdbuf ( ) - > freeze ( flag ) .

Contenidos

Notas

Después de una llamada a str() , los flujos dinámicos se congelan automáticamente. Se requiere una llamada a freeze ( false ) antes de salir del ámbito en el que se creó este objeto ostrstream , de lo contrario el destructor filtrará memoria. Además, la salida adicional a un flujo congelado puede truncarse una vez que alcance el final del búfer asignado.

Parámetros

flag - estado deseado

Valor de retorno

(ninguno)

Ejemplo

#include <iostream>
#include <strstream>
int main()
{
    std::ostrstream dyn; // búfer de salida asignado dinámicamente
    dyn << "Test: " << 1.23; // nota: sin std::ends para demostrar la anexación
    std::cout << "The output stream contains \"";
    std::cout.write(dyn.str(), dyn.pcount()) << "\"\n";
    // el stream ahora está congelado debido a str()
    dyn << " More text"; // la salida a un stream congelado puede truncarse
    std::cout << "The output stream contains \"";
    std::cout.write(dyn.str(), dyn.pcount()) << "\"\n";
    dyn.freeze(false); // freeze(false) debe llamarse o el destructor tendrá una fuga
    std::ostrstream dyn2; // búfer de salida asignado dinámicamente
    dyn2 << "Test: " << 1.23; // nota: sin std::ends
    std::cout << "The output stream contains \"";
    std::cout.write(dyn2.str(), dyn2.pcount()) << "\"\n";
    dyn2.freeze(false);   // descongelar el stream después de str()
    dyn2 << " More text" << std::ends; // la salida no se truncará (el búfer crece)
    std::cout << "The output stream contains \"" << dyn2.str() << "\"\n";
    dyn2.freeze(false); // freeze(false) debe llamarse o el destructor tendrá una fuga 
}

Salida posible:

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"

Véase también

establece/limpia el estado congelado del búfer
(función miembro pública de std::strstreambuf )