std::ostrstream:: str
|
char
*
str
(
)
;
|
(veraltet in C++98)
(entfernt in C++26) |
|
Gibt den Zeiger auf den Anfang des Puffers zurück, nachdem er eingefroren wurde. Ruft effektiv rdbuf ( ) - > str ( ) auf.
Inhaltsverzeichnis |
Parameter
(keine)
Rückgabewert
Zeiger auf den Anfang des Puffers im zugehörigen std:: strstreambuf oder ein Nullzeiger, falls kein Puffer verfügbar ist.
Hinweise
Vor einem Aufruf von
str()
, der das Ergebnis als C-String verwendet, muss der Streampuffer nullterminiert sein. Reguläre Ausgaben wie
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 Speicher verlieren. Zusätzlich können weitere Ausgaben an einen eingefrorenen Stream abgeschnitten werden, sobald sie das Ende des zugewiesenen Puffers erreichen, was dazu führen kann, dass der Puffer nicht nullterminiert ist.
Beispiel
#include <iostream> #include <strstream> int main() { std::ostrstream dyn; // dynamisch allozierter Ausgabepuffer dyn << "Test: " << 1.23; // std::ends wird nicht hinzugefügt, um Anhängeverhalten zu demonstrieren std::cout << "The output stream holds \""; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; // Der Stream ist jetzt durch str() eingefroren 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 Startzeiger der Eingabesequenz zurück
(öffentliche Elementfunktion von
std::strstreambuf
)
|