Namespaces
Variants

std::ostrstream:: str

From cppreference.net

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 )