Namespaces
Variants

Strings library

From cppreference.net

Содержание

Персонажи

В стандартной библиотеке C++ символ — это объект, который при последовательной обработке может представлять текст.

Этот термин означает не только объекты символьных типов , но и любое значение, которое может быть представлено типом, предоставляющим определения, указанные в библиотеке строк и следующих библиотеках:

(начиная с C++11)

В библиотеке строк и библиотеке регулярных выражений (начиная с C++11) , символ может быть только char-like типами , т.е. теми не-массивными типами, которые удовлетворяют требованиям PODType (до C++20) TrivialType и StandardLayoutType (начиная с C++20) (до C++26) TriviallyCopyable и StandardLayoutType (начиная с C++26) .

Для любого char-подобного типа T , std:: is_trivially_default_constructible_v < T > является true .

(since C++26)

Поэтому символы также называются char-like objects в библиотеке строк и библиотеке регулярных выражений (since C++11) .

Некоторые компоненты стандартной библиотеки принимают типы контейнеров символов . Они также являются типами, используемыми для представления отдельных символов. Такие типы используются для одного из шаблонных аргументов std::char_traits и шаблонов классов, которые используют std::char_traits .

Компоненты библиотеки

Библиотека строк C++ включает следующие компоненты:

Характерные черты

Многие шаблоны классов, связанные с символами (такие как std::basic_string ), требуют набора связанных типов и функций для завершения определения их семантики. Эти типы и функции предоставляются в виде набора членов typedef имён и функций в параметре шаблона Traits , используемом каждым таким шаблоном. Классы, которые способны завершить эту семантику, называются CharTraits .

Библиотека строк предоставляет шаблон класса std::char_traits , который определяет типы и функции для std::basic_string и std::basic_string_view (начиная с C++17) .

Определены следующие специализации, все они удовлетворяют требованиям CharTraits :

Определено в заголовочном файле <string>
template <> class char_traits < char > ;
template <> class char_traits < wchar_t > ;
template <> class char_traits < char8_t > ;
(начиная с C++20)
template <> class char_traits < char16_t > ;
(начиная с C++11)
template <> class char_traits < char32_t > ;
(начиная с C++11)

Когда используется пользовательский тип символьного контейнера для std::basic_string и std::basic_string_view (начиная с C++17) , также необходимо предоставить соответствующий класс характеристик символов (который может быть специализацией std::char_traits ).

Классы строк ( std::string и др.)

Шаблон класса std::basic_string обобщает способы манипуляции и хранения последовательностей символов. Создание, манипуляция и уничтожение строк обрабатываются удобным набором методов класса и связанных функций.

Для часто используемых типов предоставлены несколько специализаций std::basic_string :

Определено в заголовке <string>
Тип Определение
std::string std:: basic_string < char >
std::wstring std:: basic_string < wchar_t >
std::u8string (начиная с C++20) std:: basic_string < char8_t >
std::u16string (начиная с C++11) std:: basic_string < char16_t >
std::u32string (начиная с C++11) std:: basic_string < char32_t >

Классы string_view ( std::string_view и др.) (начиная с C++17)

Шаблон класса std::basic_string_view предоставляет легковесный объект, который обеспечивает доступ только для чтения к строке или части строки, используя интерфейс, аналогичный интерфейсу std::basic_string .

Для часто используемых типов предоставлено несколько специализаций std::basic_string_view :

Определено в заголовке <string_view>
Тип Определение
std::string_view std:: basic_string_view < char >
std::wstring_view std:: basic_string_view < wchar_t >
std::u8string_view (since 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 >

Соответствующие библиотеки

Библиотека обработки текста предоставляет поддержку локализаций, преобразований строк (например, std::toupper ), функций классификации символов (например, std::isspace ) и распознавания текстовых кодировок ( std::text_encoding ).

Отчеты о дефектах

Следующие отчеты об изменениях в поведении, являющиеся дефектными, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 1170 C++98 char-like types could be array types prohibited

Смотрите также

Документация C для Библиотеки строк