Spec-Zone.ru › C++

Библиотека строк

Символы

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

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

  • библиотека локализации
  • библиотека ввода/вывода
  • библиотека регулярных выражений
(начиная с C++11)

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

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

(начиная с 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API