c11 使用 utf-8 utf-16 和 utf-32 的内置类型改进编码支持。
但是我完全找不到在标准函数中使用它们的参考。我发现的只是如何在 c++11 而不是 C 中使用它们。
那么例如如何打印一个 char32_t 呢?
没什么好说的:C11 只引入了四个新的标准库函数来处理char16_t
and 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);
如果要将值打印为字符,则需要使用上面的转换函数。
在C11char16_t
和char32_t
C++11 中处理字符和字符串文字是相同的。