printf用于窄字符(和窄字符串)的输出,为什么printf("中文")也能正常输出?
因为"中文"是宽字符串,
wprintf才是宽字符串的输出函数
这个分环境的,不同版本有的能输出,有的输出不了
printf用于窄字符(和窄字符串)的输出,为什么printf("中文")也能正常输出? --》在编码环境匹配的时候才可正常输出(Windows:GBK,Linux:utf-8)
*
因为"中文"是宽字符串,--》不严谨,中文可以是宽字符(一般一个wchar_t代表一个中文汉字),同样可以是多字符(多个窄字符的形式,如utf-8变长编码为3个字符对应一个中文)
*
wprintf才是宽字符串的输出函数 --》没问题。
*
对于宽字符的实现,Windows通常用utf-16编码(2字节,由于utf-16也是变长编码,对应的宽字符不一定是一个 wchar_t 对一个字,记住宽字符包括汉字但不止是汉字),Linux 用 utf-32 编码(4字节,定长编码,永远一个 wchar_t 对一个字)
*
概念繁多,坑也多,慢慢踩。