Как использовать 3-х и 4-х байтовые символы Unicode со стандартными строками C ++?
В стандартном C ++ мы имеемchar
а такжеwchar_t
для хранения персонажей.char
может хранить значения между0x00 а также0xFF, А такжеwchar_t
может хранить значения между0x0000
а также0xFFFF
. std::string
использованияchar
, поэтому он может хранить только 1-байтовые символы.std::wstring
использованияwchar_t
, так что он может хранить символы до 2-байтовой ширины. Это то, что я знаю о строках в C ++. Пожалуйста, поправьте меня, если я сказал что-то не так до этого момента.
Я читаюстатья для UTF-8 в Википедии, и я узнал, что некоторые символы Юникода занимают до 4-байтового пространства. Например, китайский иероглиф имеет кодовую точку Unicode0x24B62, который занимает 3-байтовое пространство в памяти.
Есть ли контейнер строки STL для работы с такими символами? Я ищу что-то вродеstd::string32
, Также у нас былоmain()
для точки входа ASCII,wmain()
для точки входа с поддержкой 16-битных символов; какую точку входа мы используем для 3-х и 4-х байтового кода, поддерживаемого Unicode?
Можете ли вы добавить крошечный пример?
(Моя ОС: Windows 7 x64)