std::ostrstream::str
| char* str(); |
(veraltet in C++98) (entfernt in C++26) |
|
Gibt einen Zeiger auf den Anfang des Puffers zurück, nachdem dieser "eingefroren" wurde. Ruft effektiv rdbuf()->str() auf.
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
Zeiger auf den Anfang des Puffers im zugehörigen std::strstreambuf oder ein Nullzeiger, falls kein Puffer verfügbar ist.
Anmerkungen
Vor einem Aufruf von str(), der das Ergebnis als C-String verwendet, muss der Stream-Puffer null-terminiert sein. Normale Ausgaben wie mit stream << 1.2 speichern keinen Nullterminator. Er muss explizit angehängt werden, typischerweise mit dem Manipulator std::ends.
Nach einem Aufruf von str() werden dynamische Streams 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 Speicherlecks verursachen. Außerdem kann zusätzliche Ausgabe in einen eingefrorenen Stream abgeschnitten werden, sobald er das Ende des zugewiesenen Puffers erreicht. Dies kann dazu führen, dass der Puffer nicht null-terminiert ist.
[bearbeiten] Beispiel
#include <iostream> #include <strstream> int main() { std::ostrstream dyn; // dynamically-allocated output buffer dyn << "Test: " << 1.23; // not adding std::ends to demonstrate append behavior std::cout << "The output stream holds \""; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; // the stream is now frozen due to str() dyn << " More text" << std::ends; std::cout << "The output stream holds \""; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; dyn.freeze(false); }
Mögliche Ausgabe
The stream holds "Test: 1.23" The stream holds "Test: 1.23 More "
Siehe auch
| markiert den Puffer als eingefroren und gibt den Anfangszeiger der Eingabesequenz zurück (public member function of std::strstreambuf) |