std::strstreambuf::str
| char* str(); |
(veraltet in C++98) (entfernt in C++26) |
|
Ruft freeze() auf und gibt dann eine Kopie des Startzeigers des Get-Bereichs, std::streambuf::eback(), zurück.
Der Start des Get-Bereichs ist für alle beschreibbaren std::strstreambuf-Objekte, die über die von std::strstream bereitgestellte Schnittstelle konstruiert wurden, auch der Start des Put-Bereichs.
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
Eine Kopie von eback(), was ein Nullzeiger sein kann.
[bearbeiten] Hinweise
Diese Funktion wird typischerweise über die std::strstream-Schnittstelle aufgerufen.
Der Aufruf von freeze() garantiert, dass der zurückgegebene Zeiger bis zum nächsten expliziten Aufruf von freeze(false) gültig bleibt; andernfalls (bei einem dynamischen Puffer) könnte jeder Ausgabe-Vorgang eine Puffer-Neuzuweisung auslösen, die den Zeiger ungültig macht. Dies verursacht auch einen Speicherleck im Destruktor von std::strstreambuf, es sei denn, freeze(false) wird aufgerufen, bevor der Puffer (oder üblicherweise der std::strstream, der ihn verwaltet) zerstört wird.
[bearbeiten] Beispiel
#include <iostream> #include <strstream> int main() { std::strstream dyn; // dynamically-allocated read/write buffer dyn << "Test: " << 1.23 << std::ends; std::strstreambuf* buf = dyn.rdbuf(); std::cout << "R/W buffer holds [" << buf->str() // or dyn.str() << "]\n"; dyn.freeze(false); // after calling .str() on a dynamic strstream char arr[10]; std::ostrstream user(arr, 10); // fixed-size write-only buffer buf = user.rdbuf(); user << 1.23 << std::ends; std::cout << "Write-only buffer holds [" << buf->str() // or user.str() << "]\n"; std::istrstream lit("1 2 3"); // fixed-size read-only buffer buf = lit.rdbuf(); std::cout << "Read-only buffer holds [" << buf->str() // or lit.str() << "]\n"; }
Ausgabe
R/W buffer holds [Test: 1.23] Write-only buffer holds [1.23] Read-only buffer holds [1 2 31 2 3]
[bearbeiten] Siehe auch
| greift auf den Ausgabepuffer zu (public member function of std::strstream) | |
| greift auf den Ausgabepuffer zu (public member function of std::ostrstream) | |
| greift auf den Ausgabepuffer zu (public member function of std::istrstream) |