std::ostrstream:: freeze
|
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
)
|