C99的wchar.h头文件提供两种途径支持大型字符集。C11专门针对统一码(Unicode)新增了适用于UTF-16和UTF-32编码的类型
uchar.h中声明的类型 | ||
类型 | 描述 | |
char16_t | 使用16位字符的无符号整数类型(与stdint.h中的unit_least16_t相同) | |
char32_t | 使用32位字符的无符号整数类型(与stdint.h中的unit_least32_t相同) | |
size_t | sizeof运算符(stddef.h)返回的整数类型 | |
mbstate_t | 非数组类型,可储存多字节字符序列和宽字符相互转换的转换状态信息 |
该头文件中还声明了一些多字节字符串与char16_t、char32_t格式相互转换的函数。
宽字符与多字节转换函数 | ||
类型 | 描述 | |
size_t mbrto16(char16_t* restrict pwc, const char * restrict s, size_t n, mbstate_t* restrict ps) | 与mbrtowc()函数相同(wchar.h),但该函数是把字符转换为char_16类型,而不是wchar_t类型 | |
size_t mbrto32(char32_t * restrict pwc, const char * restrict s, size_t n, mbstate_t * restrict ps) | 与mbrto16()函数相同,但该函数是把字符转换为char32_t类型 | |
size_t c16rtomb(char * restrict s, wchar_t wc, mbstate_t * restrict ps) | 与wcrtobm()函数相同(wchar.h),但该函数转换的是char16_t类型字符,而不是wchar_t类型 | |
size_t c32rtomb(char * restrict s, wchar_t wc, mbstate_t * restrict ps) | 与wcrtobm()函数相同(wchar.h),但该函数转换的是char32_t类型字符,而不是wchar_t类型 |