Namespaces
Variants

std::ostrstream:: freeze

From cppreference.net

void freeze ( bool flag = true ) ;
(veraltet in C++98)
(entfernt in C++26)

Wenn der Stream ein dynamisch allokiertes Array für die Ausgabe verwendet, deaktiviert ( flag == true ) oder aktiviert ( flag == false ) die automatische Allokierung/Deallokierung des Puffers. Ruft effektiv rdbuf ( ) - > freeze ( flag ) auf.

Inhaltsverzeichnis

Hinweise

Nach einem Aufruf von str() werden dynamische Streams automatisch eingefroren. Ein Aufruf von freeze ( false ) ist erforderlich, bevor der Gültigkeitsbereich verlassen wird, in dem dieses ostrstream Objekt erstellt wurde, andernfalls wird der Destruktor Speicher verlieren. Zusätzlich kann weitere Ausgabe an einen eingefrorenen Stream abgeschnitten werden, sobald sie das Ende des zugewiesenen Puffers erreicht.

Parameter

Flagge - gewünschter Status

Rückgabewert

(keine)

Beispiel

#include <iostream>
#include <strstream>
int main()
{
    std::ostrstream dyn; // dynamisch allozierter Ausgabepuffer
    dyn << "Test: " << 1.23; // Hinweis: kein std::ends zur Demonstration der Anhängung
    std::cout << "The output stream contains \"";
    std::cout.write(dyn.str(), dyn.pcount()) << "\"\n";
    // Der Stream ist jetzt durch str() eingefroren
    dyn << " More text"; // Ausgabe an einen eingefrorenen Stream kann abgeschnitten werden
    std::cout << "The output stream contains \"";
    std::cout.write(dyn.str(), dyn.pcount()) << "\"\n";
    dyn.freeze(false); // freeze(false) muss aufgerufen werden, sonst leckt der Destruktor
    std::ostrstream dyn2; // dynamisch allozierter Ausgabepuffer
    dyn2 << "Test: " << 1.23; // Hinweis: kein std::ends
    std::cout << "The output stream contains \"";
    std::cout.write(dyn2.str(), dyn2.pcount()) << "\"\n";
    dyn2.freeze(false);   // Stream nach str() auftauen
    dyn2 << " More text" << std::ends; // Ausgabe wird nicht abgeschnitten (Puffer wächst)
    std::cout << "The output stream contains \"" << dyn2.str() << "\"\n";
    dyn2.freeze(false); // freeze(false) muss aufgerufen werden, sonst leckt der Destruktor
}

Mögliche Ausgabe:

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"

Siehe auch

Setzt/löscht den eingefrorenen Zustand des Puffers
(öffentliche Elementfunktion von std::strstreambuf )