Согласно документу cppreference.com о wchar_t
:
wchar_t
- тип для представления широкого символа (см. широкие строки). Требуется быть достаточно большим, чтобы представлять любую поддерживаемую кодовую точку символа (32 бита в системах, поддерживающих Unicode. Заметным исключением является Windows, где wchar_t - 16 бит и содержит UTF-16). Он имеет одинаковый размер, подпись и выравнивание как один из целочисленных типов, но является отдельным типом.
Стандарт говорит в [basic.fundamental]/5
:
Тип
wchar_t
- это отдельный тип, значения которого могут представлять различные коды для всех членов самого большого расширенного набора символов, указанного среди поддерживаемых локалей. Типwchar_t
должен иметь те же требования к размеру, подписи и выравниванию, что и один из других интегральных типов, называемый его базовым типом. Типыchar16_t
иchar32_t
обозначают разные типы с одинаковым размером, подписью и выравниванием какuint_least16_t
иuint_least32_t
, соответственно, в<cstdint>
, называемые базовыми типами.
Итак, если я хочу иметь дело с символами unicode, следует ли использовать wchar_t
?
Эквивалентно, как я узнаю, поддерживается ли какой-либо конкретный символ юникода wchar_t
?