glibc的wchar_t问题

glibc对wchar_t的处理确实会带来不少陷阱,因为它既可能是16位,又可能是32位。

在mac上,默认情况下是32位的,而cocoa里UniChar是16位的。另外,还有一些打印函数的格式化也受到影响。比如swprintf。

在windows上,宽字符串和窄客串格式化符都是%s。而glibc在wchar_t是16位是工作正常,到32位是则只处理了每一个字符!原因是它仍然按16位处理,而后面正好是结束符。正确的格式化符是%ls或%S。

你可能感兴趣的:(glibc的wchar_t问题)