std::basic_stringbuf<CharT,Traits,Allocator>::str
Von cppreference.com
< cpp | io | basic stringbuf
| (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) |
Holt und setzt den zugrundeliegenden String.
In den folgenden Beschreibungen sind buf und mode expositions-nur Datenmitglieder von *this.
1) Erzeugt und gibt ein std::basic_string-Objekt zurück, das eine Kopie der zugrundeliegenden Zeichensequenz dieses
std::basic_stringbuf enthält. Für reine Eingabeströme enthält der zurückgegebene String die Zeichen aus dem Bereich [eback(), egptr()). Für Eingabe/Ausgabe- oder reine Ausgabeströme enthält er die Zeichen von pbase() bis zum letzten Zeichen der Sequenz, unabhängig von egptr() und epptr().- Die Zeichensequenz in einem für das Schreiben geöffneten Puffer kann aus Effizienzgründen überdimensioniert sein. In diesem Fall werden nur die *initialisierten Zeichen* zurückgegeben: diese Zeichen sind diejenigen, die aus dem String-Argument des Konstruktors, dem String-Argument des letzten Aufrufs einer Setter-Überladung von
str()oder aus einer Schreiboperation stammen. Eine typische Implementierung, die eine Überallokation verwendet, pflegt 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 Zeichensequenz in einem für das Schreiben geöffneten Puffer kann aus Effizienzgründen überdimensioniert sein. In diesem Fall werden nur die *initialisierten Zeichen* zurückgegeben: diese Zeichen sind diejenigen, die aus dem String-Argument des Konstruktors, dem String-Argument des letzten Aufrufs einer Setter-Überladung von
|
(seit C++20) |
2) Dasselbe wie (1), außer dass a zur Erzeugung des zurückgegebenen std::basic_string verwendet wird. Äquivalent zu return std::basic_string<CharT, Traits, SAlloc>(view(), a);.
Diese Überladung nimmt an der Auflösungsentscheidung teil, nur wenn
SAlloc die Anforderungen von Allocator erfüllt.3) Erzeugt ein std::basic_string-Objekt, als ob es durch Verschieben aus der zugrundeliegenden Zeichensequenz von *this in buf erzeugt worden wäre. buf muss möglicherweise angepasst werden, um zunächst den gleichen Inhalt wie in (1) zu enthalten. Danach wird buf auf leer gesetzt und
init_buf_ptrs() aufgerufen, und dann wird das std::basic_string-Objekt zurückgegeben.4) Ersetzt die zugrundeliegende Zeichensequenz, als ob durch buf = s, und ruft dann
init_buf_ptrs() auf.5) Dasselbe wie (4), außer dass der Typ des Allocators von s nicht
Allocator ist. Diese Überladung nimmt an der Auflösungsentscheidung teil, nur wenn std::is_same_v<SAlloc, Allocator> false ist.
6) Ersetzt die zugrundeliegende Zeichensequenz, als ob durch buf = std::move(s), und ruft dann
init_buf_ptrs() auf.7) Konvertiert t implizit in eine String-Ansicht 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 an der Auflösungsentscheidung teil, nur wenn std::is_convertible_v<const StringViewLike&,
std::basic_string_view<CharT, Traits>> true ist.
std::basic_string_view<CharT, Traits>> true ist.
Inhalt |
[bearbeiten] Parameter
| s | - | a ein std::basic_string-Objekt, das die Ersatzzeichensequenz enthält |
| t | - | ein Objekt (konvertierbar in std::basic_string_view), das die Ersatzzeichensequenz enthält |
| a | - | Allocator, der für alle Speicherzuweisungen des zurückgegebenen std::basic_string verwendet werden soll |
[bearbeiten] Rückgabewert
1-3) Ein std::basic_string-Objekt, das die zugrundeliegende Zeichensequenz dieses Puffers enthält.
4-7) (keine)
[bearbeiten] Anmerkungen
Diese Funktion wird typischerweise über std::basic_istringstream::str(), std::basic_ostringstream::str() oder std::basic_stringstream::str() aufgerufen.
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_sstream_from_string_view |
202306L |
(C++26) | Schnittstellen-String-Streams mit std::string_view |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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"
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 432 | C++98 | 1. Überladung (1) gab den Inhalt der zugrundeliegenden Zeichensequenz nicht an. der zugrundeliegenden Zeichensequenz 2. Überladung (4) gab nicht an, wie die Eingabe- und Ausgabesequenzen initialisiert werden |
beide spezifiziert |
| LWG 562 | C++98 | Überladung (4) setzte epptr() so, dass er auf eine Position nach dem letzten zugrundeliegenden Zeichen zeigt, wenn bool(mode & std::ios_base::out) = true |
epptr() kann über diese Position hinaus gesetzt werden über diese Position hinaus |
[bearbeiten] Siehe auch
| holt oder setzt den Inhalt des zugrunde liegenden String-Geräteobjekts (öffentliche Memberfunktion von std::basic_stringstream<CharT,Traits,Allocator>) | |
| (C++20) |
ruft eine Ansicht der zugrundeliegenden Zeichensequenz ab (öffentliche Memberfunktion) |