Namespaces
Variants

Strings library

From cppreference.net

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 T ist std:: is_trivially_default_constructible_v < T > true .

(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