std::strstream::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 z. B. mit stream << 1.2, speichern keinen Nullterminator; dieser 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 strstream-Objekt erstellt wurde, andernfalls wird der Destruktor Speicherlecks verursachen. Darüber hinaus können zusätzliche Ausgaben an einen eingefrorenen Stream abgeschnitten werden, sobald sie das Ende des zugewiesenen Puffers erreichen, was dazu führen kann, dass der Puffer nicht null-terminiert ist.
[bearbeiten] Beispiel
#include <iostream> #include <strstream> int main() { std::strstream 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) |