Strings library
Inhaltsverzeichnis |
Zeichen
In der C++-Standardbibliothek ist ein Zeichen ein Objekt, das bei sequenzieller Behandlung Text darstellen kann.
Der Begriff bezeichnet nicht nur Objekte von character types , sondern auch jeden Wert, der durch einen Typ dargestellt werden kann, der die Definitionen bereitstellt, die in der Strings-Bibliothek und den folgenden Bibliotheken spezifiziert sind:
| (seit C++11) |
In der String-Bibliothek und der regulären Ausdrücke-Bibliothek (seit C++11) kann ein Zeichen nur von char-ähnlichen Typen sein, d.h. jenen Nicht-Array-Typen, die die Anforderungen von PODType (bis C++20) TrivialType und StandardLayoutType (seit C++20) (bis C++26) TriviallyCopyable und StandardLayoutType (seit C++26) erfüllen.
|
Für jeden char-ähnlichen Typ
|
(seit C++26) |
Daher werden Zeichen auch als char-like objects in der strings library und regular expressions library (since C++11) bezeichnet.
Einige Komponenten der Standardbibliothek akzeptieren character container types . Diese sind ebenfalls Typen, die zur Darstellung einzelner Zeichen verwendet werden. Solche Typen werden für eines der Template-Argumente von std::char_traits und den Klassentemplates verwendet, die std::char_traits verwenden.
Bibliothekskomponenten
Die C++-Strings-Bibliothek umfasst die folgenden Komponenten:
Charaktereigenschaften
Viele zeichenbezogene Klassentemplates (wie
std::basic_string
) benötigen einen Satz verwandter Typen und Funktionen, um die Definition ihrer Semantik zu vervollständigen. Diese Typen und Funktionen werden als ein Satz von Member-
typedef
-Namen und Funktionen im Template-Parameter
Traits
bereitgestellt, der von jedem solchen Template verwendet wird. Die Klassen, die in der Lage sind, diese Semantik zu vervollständigen, sind
CharTraits
.
Die String-Bibliothek stellt die Klassenvorlage std::char_traits bereit, die Typen und Funktionen für std::basic_string und std::basic_string_view (seit C++17) definiert.
Die folgenden Spezialisierungen sind definiert, alle erfüllen sie die CharTraits Anforderungen:
|
Definiert im Header
<string>
|
||
|
template
<>
class
char_traits
<
char
>
;
|
||
|
template
<>
class
char_traits
<
wchar_t
>
;
|
||
|
template
<>
class
char_traits
<
char8_t
>
;
|
(seit C++20) | |
|
template
<>
class
char_traits
<
char16_t
>
;
|
(seit C++11) | |
|
template
<>
class
char_traits
<
char32_t
>
;
|
(seit C++11) | |
Wenn ein benutzerdefinierter Zeichen-Container-Typ für std::basic_string und std::basic_string_view (since C++17) verwendet wird, muss ebenfalls eine entsprechende Character-Trait-Klasse bereitgestellt werden (die eine Spezialisierung von std::char_traits sein kann).
String-Klassen ( std::string etc.)
Die Klassenvorlage std::basic_string verallgemeinert die Manipulation und Speicherung von Zeichensequenzen. Die Erstellung, Manipulation und Zerstörung von Strings werden alle durch einen praktischen Satz von Klassenmethoden und zugehörigen Funktionen behandelt.
Mehrere Spezialisierungen von std::basic_string werden für häufig verwendete Typen bereitgestellt:
|
Definiert im Header
<string>
|
|
| Typ | Definition |
std::string
|
std:: basic_string < char > |
std::wstring
|
std:: basic_string < wchar_t > |
std::u8string
(seit C++20)
|
std:: basic_string < char8_t > |
std::u16string
(seit C++11)
|
std:: basic_string < char16_t > |
std::u32string
(seit C++11)
|
std:: basic_string < char32_t > |
String-View-Klassen ( std::string_view etc.) (seit C++17)
Die Klassenvorlage std::basic_string_view bietet ein leichtgewichtiges Objekt, das schreibgeschützten Zugriff auf einen String oder einen Teil eines Strings mit einer Schnittstelle bereitstellt, die der Schnittstelle von std::basic_string ähnelt.
Mehrere Spezialisierungen von std::basic_string_view werden für häufig verwendete Typen bereitgestellt:
|
Definiert im Header
<string_view>
|
|
| Typ | Definition |
std::string_view
|
std:: basic_string_view < char > |
std::wstring_view
|
std:: basic_string_view < wchar_t > |
std::u8string_view
(seit C++20)
|
std:: basic_string_view < char8_t > |
std::u16string_view
|
std:: basic_string_view < char16_t > |
std::u32string_view
|
std:: basic_string_view < char32_t > |
Relevante Bibliotheken
Die Textverarbeitungsbibliothek bietet Unterstützung für Lokalisierungen, Zeichenkettenkonvertierungen (z.B. std::toupper ), Zeichenklassifizierungsfunktionen (z.B. std::isspace ) und Textkodierungserkennung ( std::text_encoding ).
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 1170 | C++98 | char-ähnliche Typen könnten Array-Typen sein | verboten |
Siehe auch
|
C-Dokumentation
für
String-Bibliothek
|