73-宽字符和多字节字符
B.7.7 宽字符和多字节字符
宽字符和多字节字符是处理扩展字符集的两种不同的方法。例如,多字节字符可能是一个字节、两个字节、三个字节或更多字节,而所有的宽字符都只有一个宽度。多字节字符可能使用移位状态(移位状态是一个字节,确定如何解释后续字节);而宽字符没有移位状态。可以把多字节字符的文件读入使用标准输入函数的普通 char 类型数组,把宽字节的文件读入使用宽字符输入函数的宽字节数组。
C99在 wchar.h 库中提供了一些函数,用于多字节和宽字节之间的转换。 mbrtowc() 函数把多字节字符转换为宽字符, wcrtomb() 函数把宽字符转换为多字节字符。类似地, mbstrtowcs() 函数把多字节字符串转换为宽字节字符串, wcstrtombs() 函数把宽字节字符串转换为多字节字符串。
C11在 uchar.h 库中提供了一些函数,用于多字节和 char16_t 之间的转换,以及多字节和 char32_t 之间的转换。