Namensräume
Varianten
Aktionen

std::strstreambuf::str

Von cppreference.com
< cpp‎ | io‎ | strstreambuf
 
 
 
 
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) [bearbeiten]
greift auf den Ausgabepuffer zu
(public member function of std::ostrstream) [bearbeiten]
greift auf den Ausgabepuffer zu
(public member function of std::istrstream) [bearbeiten]