Как использовать новые типы char16_t и u8?
c11 улучшить поддержку кодирования с помощью встроенных типов для utf-8 utf-16 и utf-32.
Однако мне не удалось найти ссылку на их использование в стандартных функциях. Все, что я нашел, это как использовать их в C++11, а не в C.
Так как же распечатать char32_t например?
1 ответ
Сказать особо нечего: C11 представил только четыре новых стандартных библиотечных функции для работы с char16_t
а также char32_t
, которые преобразуют их в / из многобайтовых строк:
char16_t
:mbrtoc16()
а такжеc16rtomb()
char32_t
:mbrtoc32()
а такжеc32rtomb()
Что касается printf()
они ведут себя как uint_least16_t
а также uint_least32_t
типы, так что вы можете использовать те же спецификаторы формата для них:
#include <inttypes.h>
char32_t x = ...;
printf("%" PRIuLEAST32 "\n", x);
Если вы хотите напечатать значение в виде символа, вам нужно будет использовать функции преобразования выше.
Работать с char16_t
а также char32_t
символьные и строковые литералы идентичны как в C11, так и в C++11.