对 windows/linux 的 char 和 wchar_t 简单测试
1. 对于 mbs(multi-byte-string) 而言, 在 string 中的 size 返回的是所占字节的大小.
2. 某些字符 mbs 是无法表示的. 比如 “𪚥” 这样字符. Vs 2008/2012 中的 mbs(std::string 以及 vc 9 中 atl 的 CString), 对于无法转换的字符都以 3f 填充. 下图以 std::string 为例.
3. 之前发的连接中给的算法是对的: http://blog.csdn.net/wallaceli1981/article/details/5740618
对于 wcstombs 需要 4 倍于原 wcs 的缓冲区来存放 mbs 的结果. 但是在 windows 下是无效的, linux 通过测试: http://en.cppreference.com/w/cpp/string/multibyte/wctomb. 下图为原程序稍加改造.
4. vc的 wchar_t 使用的是 ucs-2le, 测试发现, 对于 “𪚥”, 它的编码如下:
Linux 由于使用了 utf-8, 并且 wchar_t 是 4 字节, 测试如下: