std::basic_stringbuf<CharT,Traits,Allocator>:: str
| (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 .
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.
-
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
|
(seit C++20) |
SAlloc
die Anforderungen eines
Allocator
erfüllt.
init_buf_ptrs
()
auf, dann gibt es das
std::basic_string
-Objekt zurück.
Allocator
ist.
init_buf_ptrs
()
auf.
init_buf_ptrs
()
auf.
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
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) |