std::basic_string_view
| Definiert in Header <string_view> |
||
| template< class CharT, |
(seit C++17) | |
Die Klassenvorlage basic_string_view beschreibt ein Objekt, das auf eine konstante, zusammenhängende Sequenz von CharT verweisen kann, wobei das erste Element der Sequenz an Position Null steht.
Für eine basic_string_view str werden Zeiger, Iteratoren und Referenzen auf Elemente von str ungültig, wenn eine Operation einen Zeiger im Bereich [str.data(), str.data() + str.size()) ungültig macht.
|
Jede Spezialisierung von |
(seit C++23) |
Eine typische Implementierung hält nur zwei Member: einen Zeiger auf konstante CharT und eine Größe.
Mehrere Typedefs für gängige Zeichentypen werden bereitgestellt
| Definiert in Header
<string_view> | |
| Typ | Definition |
| std::string_view (C++17) | std::basic_string_view<char> |
| std::wstring_view (C++17) | std::basic_string_view<wchar_t> |
| std::u8string_view (C++20) | std::basic_string_view<char8_t> |
| std::u16string_view (C++17) | std::basic_string_view<char16_t> |
| std::u32string_view (C++17) | std::basic_string_view<char32_t> |
Inhalt |
[edit] Template-Parameter
| CharT | - | Zeichentyp |
| Traits | - | CharTraits Klasse, die die Operationen auf dem Zeichentyp spezifiziert. Wie bei std::basic_string muss Traits::char_type denselben Typ wie CharT benennen, andernfalls ist das Programm ill-formed. |
[edit] Member-Typen
| Verschachtelter Typ | Definition | ||||
traits_type
|
Traits
| ||||
value_type
|
CharT
| ||||
Zeiger
|
CharT* | ||||
const_pointer
|
const CharT* | ||||
Referenz
|
CharT& | ||||
const_reference
|
const CharT& | ||||
const_iterator
|
implementierungsabhängige Konstante LegacyRandomAccessIterator,
deren | ||||
iterator
|
const_iterator
| ||||
const_reverse_iterator
|
std::reverse_iterator<const_iterator> | ||||
reverse_iterator
|
const_reverse_iterator
| ||||
size_type
|
std::size_t | ||||
difference_type
|
std::ptrdiff_t |
Hinweis: iterator und const_iterator sind vom selben Typ, da String-Views Ansichten in konstanten Zeichensequenzen sind.
Alle Anforderungen an die Iteratortypen eines Containers gelten auch für die iterator- und const_iterator-Typen von basic_string_view.
[edit] Member-Funktionen
Konstruktoren und Zuweisung | |
konstruiert eine basic_string_view(öffentliche Member-Funktion) | |
| weist eine Ansicht zu (öffentliche Member-Funktion) | |
Iteratoren | |
| gibt einen Iterator zum Anfang zurück (öffentliche Member-Funktion) | |
| gibt einen Iterator zum Ende zurück (öffentliche Member-Funktion) | |
| gibt einen Reverse-Iterator zum Anfang zurück (öffentliche Member-Funktion) | |
| gibt einen Reverse-Iterator zum Ende zurück (öffentliche Member-Funktion) | |
Elementzugriff | |
| greift auf das angegebene Zeichen zu (öffentliche Member-Funktion) | |
| greift mit Grenzwertprüfung auf das angegebene Zeichen zu (öffentliche Member-Funktion) | |
| greift auf das erste Zeichen zu (öffentliche Member-Funktion) | |
| greift auf das letzte Zeichen zu (öffentliche Member-Funktion) | |
| gibt einen Zeiger auf das erste Zeichen einer Ansicht zurück (öffentliche Member-Funktion) | |
Kapazität | |
| gibt die Anzahl der Zeichen zurück (öffentliche Member-Funktion) | |
| gibt die maximale Anzahl von Zeichen zurück (öffentliche Member-Funktion) | |
| prüft, ob die Ansicht leer ist (öffentliche Member-Funktion) | |
Modifizierer | |
| verkleinert die Ansicht, indem ihr Anfang nach vorne verschoben wird (öffentliche Member-Funktion) | |
| verkleinert die Ansicht, indem ihr Ende nach hinten verschoben wird (öffentliche Member-Funktion) | |
| tauscht die Inhalte (öffentliche Member-Funktion) | |
Operationen | |
| kopiert Zeichen (öffentliche Member-Funktion) | |
| gibt eine Teilzeichenkette zurück (öffentliche Member-Funktion) | |
| vergleicht zwei Ansichten (öffentliche Member-Funktion) | |
| (C++20) |
prüft, ob die Zeichenansicht mit dem gegebenen Präfix beginnt (öffentliche Member-Funktion) |
| (C++20) |
prüft, ob die Zeichenansicht mit dem gegebenen Suffix endet (öffentliche Member-Funktion) |
| (C++23) |
prüft, ob die Zeichenansicht die gegebene Teilzeichenkette oder das gegebene Zeichen enthält (öffentliche Member-Funktion) |
| sucht Zeichen in der Ansicht (öffentliche Member-Funktion) | |
| sucht das letzte Vorkommen einer Teilzeichenkette (öffentliche Member-Funktion) | |
| findet das erste Vorkommen von Zeichen (öffentliche Member-Funktion) | |
| findet das letzte Vorkommen von Zeichen (öffentliche Member-Funktion) | |
| findet das erste Fehlen von Zeichen (öffentliche Member-Funktion) | |
| findet das letzte Fehlen von Zeichen (öffentliche Member-Funktion) | |
Konstanten | |
| [static] |
spezieller Wert. Die genaue Bedeutung hängt vom Kontext ab (öffentliche statische Member-Konstante) |
[edit] Nicht-Member-Funktionen
| (C++17)(entfernt in C++20)(entfernt in C++20)(entfernt in C++20)(entfernt in C++20)(entfernt in C++20)(C++20) |
vergleicht zwei Zeichenansichten lexikographisch (Funktionsschablone) |
Ein-/Ausgabe | |
| (C++17) |
führt die Stromausgabe auf Zeichenansichten durch (Funktionsschablone) |
[edit] Literale
| Definiert im Inline-Namespace
std::literals::string_view_literals | |
| (C++17) |
erzeugt eine Zeichenansicht eines Zeichenkettenliteral (Funktion) |
[edit] Hilfsklassen
| Hash-Unterstützung für String-Views (Klassentemplate-Spezialisierung) |
[edit] Hilfsschablonen
| template< class CharT, class Traits > inline constexpr bool |
(seit C++20) | |
Diese Spezialisierung von ranges::enable_borrowed_range lässt basic_string_view borrowed_range erfüllen.
| template< class CharT, class Traits > inline constexpr bool |
(seit C++20) | |
Diese Spezialisierung von ranges::enable_view lässt basic_string_view view erfüllen.
Deduction Guides |
(seit C++20) |
[edit] Anmerkungen
Es liegt in der Verantwortung des Programmierers sicherzustellen, dass std::string_view nicht länger lebt als das darauf verweisende Zeichenarray
std::string_view good{"a string literal"}; // "Good" case: `good` points to a static array. // String literals reside in persistent data storage. std::string_view bad{"a temporary string"s}; // "Bad" case: `bad` holds a dangling pointer since the std::string temporary, // created by std::operator""s, will be destroyed at the end of the statement.
Spezialisierungen von std::basic_string_view sind bereits trivial kopierbare Typen in allen existierenden Implementierungen, noch bevor die formale Anforderung in C++23 eingeführt wurde.
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_string_view |
201606L |
(C++17) | std::string_view
|
201803L |
(C++20) | ConstexprIterator | |
__cpp_lib_string_contains |
202011L |
(C++23) | contains
|
[edit] Beispiel
Ausgabe
▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─ ▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─ ▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄ ▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀ ▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─ ▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─
[edit] 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 3203 | C++17 | nur Zeiger, Iteratoren und Referenzen die von den Member-Funktionen von basic_string_view zurückgegeben werden, können ungültig werden |
alle Zeiger, Iteratoren und Referenzen auf Elemente von basic_string_viewkönnen ungültig werden |
[edit] Siehe auch
| speichert und manipuliert Zeichenfolgen (Klassenvorlage) | |
| verbindet zwei Zeichenketten, eine Zeichenkette und ein char oder eine Zeichenkette und eine string_view (function template) | |
| (C++20) |
eine nicht besitzende Ansicht über eine zusammenhängende Sequenz von Objekten (class template) |
| (C++11) |
verweist auf ein temporäres Array, das in der Listeninitialisierung erstellt wurde (Klassenvorlage) |