Библиотека строк
Символы
В стандартной библиотеке C++ символ — это объект, который при последовательной обработке может представлять текст.
Этот термин обозначает не только объекты символьных типов, но и любые значения, которые могут быть представлены типом, предоставляющим определения, указанные в библиотеке строк и следующих библиотеках:
| (начиная с C++11) |
В библиотеке строк и библиотеке регулярных выражений(начиная с C++11) символ может иметь только char-подобные типы, то есть те типы, не являющиеся массивами, которые удовлетворяют требованиям PODType(до C++20)TrivialType и StandardLayoutType(начиная с C++20)(до C++26)TriviallyCopyable и StandardLayoutType(начиная с C++26).
| Для любого char-подобного типа | (начиная с C++26) |
Поэтому в библиотеке строк и библиотеке регулярных выражений(начиная с C++11) символы также называют char-подобными объектами.
Некоторые компоненты стандартной библиотеки принимают типы контейнеров символов. Они также являются типами, используемыми для представления отдельных символов. Такие типы используются в качестве одного из аргументов шаблона для 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> |
Классы представлений строк (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 (начиная с 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 | Применяется к | Опубликованное поведение | Правильное поведение |
|---|---|---|---|
| LWG 1170 | C++98 | char-подобные типы могли быть типами массивов | запрещено |
См. также
| Документация C по библиотеке строк |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/string