Как использовать новые типы 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.

Другие вопросы по тегам