mbstowcs()是MultiByteToWideChar()的简化版,除了参数少了,本来以为参数少了一些,并不会影响使用,今天却发现了它的一个小问题,在中文字符的转换上,前者似乎无法对中文字符进行处理,转换后显示成乱码,而后者则不会。看来以后还是不能太偷懒了。我开始一直嫌后者的参数太多,麻烦,不愿意用,甚至想用A2OLE()宏来处理,可惜这个好东东不能在普通win32程序中使用。呵呵。
代码:
WCHAR strPath[MAX_PATH];
CHAR buf[] = “i am 中国人”;
// 简化版对中文字符的转换不好
// mbstowcs( strPath, buf, MAX_PATH );
// 还是这个比较好
MultiByteToWideChar(CP_ACP, 0, buf, strlen(buf), strPath, MAX_PATH );
代码:
WCHAR strPath[MAX_PATH];
CHAR buf[] = “i am 中国人”;
// 简化版对中文字符的转换不好
// mbstowcs( strPath, buf, MAX_PATH );
// 还是这个比较好
MultiByteToWideChar(CP_ACP, 0, buf, strlen(buf), strPath, MAX_PATH );
博客指出mbstowcs()是MultiByteToWideChar()的简化版,原本以为参数少不影响使用,但发现mbstowcs()在中文字符转换上会显示乱码,而MultiByteToWideChar()则不会。还提到曾想用A2OLE()宏处理,但它不能在普通win32程序中使用。
1152

被折叠的 条评论
为什么被折叠?



