Namespaces
Variants

std::basic_stringbuf<CharT,Traits,Allocator>:: str

From de.cppreference.net
(1)
std:: basic_string < CharT, Traits, Allocator > str ( ) const ;
(bis C++20)
std:: basic_string < CharT, Traits, Allocator > str ( ) const & ;
(seit C++20)
template < class SAlloc >
std:: basic_string < CharT, Traits, SAlloc > str ( const SAlloc & a ) const ;
(2) (seit C++20)
std:: basic_string < CharT, Traits, Allocator > str ( ) && ;
(3) (seit C++20)
void str ( const std:: basic_string < CharT, Traits, Allocator > & s ) ;
(4)
template < class SAlloc >
void str ( const std:: basic_string < CharT, Traits, SAlloc > & s ) ;
(5) (seit C++20)
void str ( std:: basic_string < CharT, Traits, Allocator > && s ) ;
(6) (seit C++20)
template < class StringViewLike >
void str ( const StringViewLike & t ) ;
(7) (seit C++26)

Ruft den zugrunde liegenden String ab und legt ihn fest.

In den folgenden Beschreibungen sind buf und mode exposition-only data members von * this .

1) Erstellt und gibt ein std::basic_string -Objekt zurück, das eine Kopie der zugrundeliegenden Zeichensequenz dieses std::basic_stringbuf enthält. Für Nur-Eingabe-Streams enthält der zurückgegebene String die Zeichen aus dem Bereich [ eback() , egptr() ) . Für Eingabe/Ausgabe- oder Nur-Ausgabe-Streams enthält er die Zeichen von pbase() bis zum letzten Zeichen in der Sequenz, unabhängig von egptr() und epptr() .
Die Zeichenfolge der Mitglieder in einem zum Schreiben geöffneten Puffer kann aus Effizienzgründen überallokiert werden. In diesem Fall werden nur die initialisierten Zeichen zurückgegeben: dies sind die Zeichen, die aus dem String-Argument des Konstruktors, dem String-Argument des letzten Aufrufs einer Setter-Überladung von str() oder aus einem Schreibvorgang stammen. Eine typische Implementierung, die Überallokation verwendet, verwaltet einen High-Watermark-Zeiger, um das Ende des initialisierten Teils des Puffers zu verfolgen, und diese Überladung gibt die Zeichen von pbase() bis zum High-Watermark-Zeiger zurück.
Entspricht return std:: basic_string < CharT, Traits, Allocator > ( view ( ) , get_allocator ( ) ) ; .
(seit C++20)
2) Gleich wie (1) , außer dass a zur Konstruktion der zurückgegebenen std::basic_string verwendet wird. Entspricht return std:: basic_string < CharT, Traits, SAlloc > ( view ( ) , a ) ; .
Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn SAlloc die Anforderungen eines Allocator erfüllt.
3) Erstellt ein std::basic_string -Objekt, als ob es durch Move-Konstruktion aus * this 's zugrundeliegender Zeichensequenz in buf erstellt würde. buf muss möglicherweise zunächst angepasst werden, um denselben Inhalt wie in (1) zu enthalten. Danach setzt es buf auf leer und ruft init_buf_ptrs () auf, dann gibt es das std::basic_string -Objekt zurück.
4) Ersetzt die zugrundeliegende Zeichenfolge als ob durch buf = s , ruft dann init_buf_ptrs () auf.
5) Gleich wie (4) , außer dass der Typ von s s Allokator nicht Allocator ist.
Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn std:: is_same_v < SAlloc, Allocator > false ist.
6) Ersetzt die zugrundeliegende Zeichenfolge wie durch buf = std :: move ( s ) , ruft dann init_buf_ptrs () auf.
7) Konvertiert implizit t zu einem String-View sv als ob durch std:: basic_string_view < CharT, Traits > sv = t ; , ersetzt dann die zugrundeliegende Zeichensequenz als ob durch buf = sv , und ruft dann init_buf_ptrs () auf.
Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn std:: is_convertible_v < const StringViewLike & ,
std:: basic_string_view < CharT, Traits >>
true ist.

Inhaltsverzeichnis

Parameter

s - ein std::basic_string -Objekt, das die Ersatzzeichenfolge enthält
t - ein Objekt (konvertierbar zu std::basic_string_view ), das die Ersatzzeichenfolge enthält
a - Allokator, der für alle Speicherallokationen der zurückgegebenen std::basic_string verwendet wird

Rückgabewert

1-3) Ein std::basic_string Objekt, das die zugrundeliegende Zeichenfolge dieses Puffers enthält.
4-7) (keine)

Hinweise

Diese Funktion wird typischerweise über std::basic_istringstream::str() , std::basic_ostringstream::str() oder std::basic_stringstream::str() aufgerufen.

Feature-Test Makro Wert Std Funktion
__cpp_lib_sstream_from_string_view 202306L (C++26) Verbindung von String-Streams mit std::string_view

Beispiel

#include <iostream>
#include <sstream>
int main()
{
    int n;
    std::istringstream in;  // could also use in("1 2")
    in.rdbuf()->str("1 2"); // set the get area
    in >> n;
    std::cout << "after reading the first int from \"1 2\", the int is " 
              << n << ", str() = \"" << in.rdbuf()->str() << "\"\n"; // or in.str()
    std::ostringstream out("1 2");
    out << 3;
    std::cout << "after writing the int '3' to output stream \"1 2\""
              << ", str() = \"" << out.str() << "\"\n";
    std::ostringstream ate("1 2", std::ios_base::ate); // C++11
    ate << 3;
    std::cout << "after writing the int '3' to append stream \"1 2\""
              << ", str() = \"" << ate.str() << "\"\n";
}

Ausgabe:

after reading the first int from "1 2", the int is 1, str() = "1 2"
after writing the int '3' to output stream "1 2", str() = "3 2"
after writing the int '3' to append stream "1 2", str() = "1 23"

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 432 C++98 1. Überladung (1) spezifizierte nicht den Inhalt
der zugrundeliegenden Zeichensequenz
2. Überladung (4) spezifizierte nicht, wie die
Eingabe- und Ausgabesequenzen initialisiert werden
beide spezifiziert
LWG 562 C++98 Überladung (4) setzte epptr() auf eine Position hinter dem letzten zugrundeliegenden
Zeichen, wenn bool ( mode & std:: ios_base :: out ) == true
epptr() kann
über diese Position hinaus gesetzt werden

Siehe auch

ruft die Inhalte des zugrundeliegenden String-Device-Objekts ab oder setzt sie
(öffentliche Elementfunktion von std::basic_stringstream<CharT,Traits,Allocator> )
(C++20)
erhält eine Ansicht über die zugrundeliegende Zeichensequenz
(öffentliche Elementfunktion)