Strings library
Содержание |
Персонажи
В стандартной библиотеке C++ символ — это объект, который при последовательной обработке может представлять текст.
Этот термин означает не только объекты символьных типов , но и любое значение, которое может быть представлено типом, предоставляющим определения, указанные в библиотеке строк и следующих библиотеках:
| (начиная с C++11) |
В библиотеке строк и библиотеке регулярных выражений (начиная с C++11) , символ может быть только char-like типами , т.е. теми не-массивными типами, которые удовлетворяют требованиям PODType (до C++20) TrivialType и StandardLayoutType (начиная с C++20) (до C++26) TriviallyCopyable и StandardLayoutType (начиная с C++26) .
|
Для любого char-подобного типа
|
(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
для
Библиотеки строк
|