Размер wchar_t для кодировки Unicode - PullRequest
2 голосов
/ 17 марта 2011

есть ли 32-битный широкий символ для кодирования строк UTF-32? Я хотел бы сделать это через std::wstring, что, по-видимому, показывает размер широкого символа 16 бит на платформе Windows.

Ответы [ 4 ]

6 голосов
/ 17 марта 2011

Вы не сможете сделать это с std::wstring на многих платформах, потому что он будет иметь 16-битные элементы.

Вместо этого вы должны использовать std::basic_string<char32_t>, но для этого требуется компилятор с некоторой поддержкой C ++ 0x.

5 голосов
/ 17 марта 2011

Размер wchar_t зависит от платформы и не зависит от UTF-8, UTF-16 и UTF-32 (его можно использовать для представления данных в Юникоде, но нет ничего, что говорит о том, что он представляет ).

Я настоятельно рекомендую использовать UTF-8 с std::string для внутреннего представления строк и использовать установленные библиотеки, такие как ICU, для сложных манипуляций и задач преобразования с использованием Unicode.

1 голос
/ 17 марта 2011

Библиотека с открытым исходным кодом ICU поможет, но базовая версия Windows / VS2010 вам не поможет.

0 голосов
/ 23 июля 2018

Просто используйте typedef!

Это будет выглядеть примерно так:

typedef int char_32;

И используйте это так:

char_32 myChar;

или как-строка:

char_32* string_of_32_bit_char = "Hello World";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...