std::basic_string_view
| Definiert in Header <string_view>
|
||
template<
class CharT,
class Traits = std::char_traits<CharT>
> class basic_string_view;
|
(seit C++17) | |
Die Klassenschablone basic_string_view beschreibt ein Objekt, das auf eine konstante zusammenhängende Sequenz von CharT verweisen kann, wobei sich das erste Element der Sequenz an Position Null befindet.
Für ein 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) |
Es werden mehrere Typdefinitionen für gebräuchliche Zeichentypen 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>
|
Template-Parameter
| CharT | - | Zeichentyp |
| Traits | - |
CharTraits
Klasse, die die Operationen für den Zeichentyp spezifiziert. Wie bei
std::basic_string
muss
Traits::char_type
denselben Typ wie
CharT
bezeichnen, andernfalls ist das Programm fehlerhaft.
|
Geschachtelte Typen
| Typ | Definition | ||||
traits_type
|
Traits
|
||||
value_type
|
CharT
|
||||
pointer
|
CharT * | ||||
const_pointer
|
const CharT * | ||||
reference
|
CharT & | ||||
const_reference
|
const CharT & | ||||
const_iterator
|
implementierungsdefinierter konstanter
LegacyRandomAccessIterator
,
dessen
|
||||
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 der gleiche Typ, da String-Views Ansichten in konstante Zeichensequenzen sind.
Alle Anforderungen an die Iteratortypen eines
Container
gelten ebenfalls für die
iterator
- und
const_iterator
-Typen von
basic_string_view
.
Datenmitglieder
| Mitglied | Beschreibung |
const_pointer
data_
|
ein Zeiger auf die zugrundeliegende Sequenz
( Nur-Darstellungs-Mitgliedsobjekt* ) |
size_type
size_
|
die Anzahl der Zeichen
( Nur-Darstellungs-Mitgliedsobjekt* ) |
Memberfunktionen
Konstruktoren und Zuweisung |
|
Konstruiert einen
basic_string_view
(öffentliche Elementfunktion) |
|
|
weist eine Ansicht zu
(öffentliche Elementfunktion) |
|
Iteratoren |
|
|
gibt einen Iterator zum Anfang zurück
(öffentliche Elementfunktion) |
|
|
gibt einen Iterator zum Ende zurück
(öffentliche Member-Funktion) |
|
|
gibt einen Reverse-Iterator zum Anfang zurück
(öffentliche Member-Funktion) |
|
|
gibt einen umgekehrten Iterator zum Ende zurück
(öffentliche Elementfunktion) |
|
Elementzugriff |
|
|
greift auf das angegebene Zeichen zu
(öffentliche Elementfunktion) |
|
|
greift auf das angegebene Zeichen mit Grenzprüfung zu
(öffentliche Elementfunktion) |
|
|
greift auf das erste Zeichen zu
(öffentliche Elementfunktion) |
|
|
greift auf das letzte Zeichen zu
(öffentliche Elementfunktion) |
|
|
gibt einen Zeiger auf das erste Zeichen der Ansicht zurück
(öffentliche Elementfunktion) |
|
Kapazität |
|
|
gibt die Anzahl der Zeichen zurück
(öffentliche Elementfunktion) |
|
|
gibt die maximale Anzahl von Zeichen zurück
(öffentliche Elementfunktion) |
|
|
prüft, ob die Ansicht leer ist
(öffentliche Elementfunktion) |
|
Modifikatoren |
|
|
verkleinert die Ansicht, indem der Start nach vorne verschoben wird
(öffentliche Elementfunktion) |
|
|
verkleinert die Ansicht, indem das Ende nach hinten verschoben wird
(öffentliche Elementfunktion) |
|
|
tauscht die Inhalte aus
(öffentliche Elementfunktion) |
|
Operationen | |
| kopiert Zeichen (öffentliche Memberfunktion) | |
| gibt einen Teilstring zurück (öffentliche Memberfunktion) | |
(C++26) |
gibt eine Teilansicht zurück (öffentliche Memberfunktion) |
| vergleicht zwei Ansichten (öffentliche Memberfunktion) | |
(C++20) |
prüft, ob die Zeichenfolgenansicht mit dem angegebenen Präfix beginnt (öffentliche Memberfunktion) |
(C++20) |
prüft, ob die Zeichenfolgenansicht mit dem angegebenen Suffix endet (öffentliche Memberfunktion) |
(C++23) |
prüft, ob die Zeichenfolgenansicht die angegebene Teilzeichenfolge oder das angegebene Zeichen enthält (öffentliche Memberfunktion) |
| findet Zeichen in der Ansicht (öffentliche Memberfunktion) | |
| findet das letzte Vorkommen einer Teilzeichenfolge (öffentliche Memberfunktion) | |
| findet das erste Vorkommen von Zeichen (öffentliche Memberfunktion) | |
| findet das letzte Vorkommen von Zeichen (öffentliche Memberfunktion) | |
| findet das erste Nichtvorhandensein von Zeichen (öffentliche Memberfunktion) | |
| findet das letzte Nichtvorhandensein von Zeichen (öffentliche Memberfunktion) | |
Konstanten |
|
|
[static]
|
Spezialwert. Die genaue Bedeutung hängt vom Kontext ab
(öffentliche statische Member-Konstante) |
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 String-Views lexikographisch
(Funktionstemplate) |
Eingabe/Ausgabe |
|
|
(C++17)
|
führt Stream-Ausgabe für String-Views durch
(Funktionstemplate) |
Literale
|
Definiert im Inline-Namensraum
std::literals::string_view_literals
|
|
|
(C++17)
|
erstellt einen String-View eines Zeichenarray-Literals
(Funktion) |
Hilfsklassen
|
(C++17)
(C++17)
(C++20)
(C++17)
(C++17)
|
Hash-Unterstützung für String-Views
(Klassen-Template-Spezialisierung) |
Hilfsvorlagen
|
template
<
class
CharT,
class
Traits
>
inline
constexpr
bool
|
(seit C++20) | |
Diese Spezialisierung von
ranges::enable_borrowed_range
bewirkt, dass
basic_string_view
die Anforderungen von
borrowed_range
erfüllt.
|
template
<
class
CharT,
class
Traits
>
inline
constexpr
bool
|
(seit C++20) | |
Diese Spezialisierung von
ranges::enable_view
bewirkt, dass
basic_string_view
die Anforderungen von
view
erfüllt.
Deduktionsanleitungen |
(seit C++20) |
Hinweise
Es ist die Verantwortung des Programmierers, sicherzustellen, dass
std::string_view
nicht länger existiert als das zugrunde liegende Zeichenarray:
std::string_view good{"a string literal"}; // "Guter" Fall: `good` zeigt auf ein statisches Array. // Zeichenkettenliterale befinden sich im persistenten Datenspeicher. std::string_view bad{"a temporary string"s}; // "Schlechter" Fall: `bad` enthält einen hängenden Zeiger, da das std::string-Temporary, // erstellt durch std::operator""s, am Ende der Anweisung zerstört wird.
Spezialisierungen von
std::basic_string_view
sind bereits in allen existierenden Implementierungen trivial kopierbare Typen, selbst vor der formalen Anforderung, die in C++23 eingeführt wurde.
| Feature-Test Makro | Wert | Standard | Funktion |
|---|---|---|---|
__cpp_lib_string_view
|
201606L
|
(C++17) |
std::string_view
|
201803L
|
(C++20) | ConstexprIterator | |
__cpp_lib_string_contains
|
202011L
|
(C++23) |
contains
|
Beispiel
Ausgabe:
▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─ ▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─ ▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄ ▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀ ▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─ ▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─ ▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄▀─▄ ▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀▄─▀
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 Memberfunktionen von
basic_string_view
zurückgegeben werden, könnten ungültig werden
|
Alle Zeiger, Iteratoren und Referenzen
auf Elemente von
basic_string_view
können ungültig werden |
Siehe auch
|
speichert und manipuliert Zeichenfolgen
(Klassentemplate) |
|
|
verkettet zwei Strings, einen String und ein
char
, oder einen String und ein
string_view
(Funktionstemplate) |
|
|
(C++20)
|
eine nicht-besitzende Ansicht über eine zusammenhängende Objektsequenz
(Klassentemplate) |
|
(C++11)
|
referenziert ein temporäres Array, das bei
Listeninitialisierung
erstellt wird
(Klassentemplate) |