Строки с поддержкой Unicode

Последнее обновление: 02.03.2023

Строки с поддержкой Unicode

Для поддержки строк с символами кодировок Unicode в С++ в модуле <string> также есть еще ряд дополнительных типов строк.

  • std::wstring содержит строку символов типа wchar_t

  • std::u8string содержит строку символов типа char8_t (добавлена в C++20)

  • std::u16string содержит строку символов типа char16_t

  • std::u32string содержит строку символов типа char32_t

Например, определим переменную типа std::wstring

std::wstring text;

Ее также можно инициализировать конкретной строкой. При присвоении переменной wstring перед строкой указывается префикс L. Для определения строк других типов также применяются определенные суффиксы: u8 для u8string, u для u16string и U для u32string. Например, определим переменные этих типов

std::wstring text {L"Hello World!"};
std::u8string text8{u8"Hello World!"};
std::u16string text16 {u"Hello World!"};
std::u32string text32 {U"Hello World!"};

Для вывода строки типа std::wstring применяется поток std::wcout

#include <iostream>
#include <string>

int main()
{
    std::wstring text {L"Hello World!"};
    std::wcout << text << std::endl;  // Hello! Good bye...
}

Для вывода строк остальных типов в С++ пока не определено своих типов потоков.

В остальном работа со строками этих типов аналогична работе с типом string, они могут использовать те же функции, что и тип string.

Однако стоит учитывать, что поскольку wstring использует тип символов wchar_t, то кодировка символов таких строк зависит от компилятом. На Windows обычно применяется UTF-16, соответственно строка будет состоять из 2-байтовых символов UTF-16. Но в большинстве других систем применяются 4-байтные символы UTF-32 wchar_t. На этом фоне типы u8string, u16string и u32string выглядят более предпочтительно, однако на данный момент в C++ имеется довольно ограниченная поддержка по работе с символами Unicode.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850