CString str;
str.Format("程序员之家");
str.GetLength(); //结果是10
BSTR n = str.AllocSysString();
n.length();// 结果是5了怎么会有这种现象,如何解决?
总不能×2吧,我有的字符串可能是“aabb中国c"这样的
str.Format("程序员之家");
str.GetLength(); //结果是10
BSTR n = str.AllocSysString();
n.length();// 结果是5了怎么会有这种现象,如何解决?
总不能×2吧,我有的字符串可能是“aabb中国c"这样的
CString 一个单位是char,一个汉字2个charBSTR是Unicode编码,一个汉字一个wchar_t所以是5个wchar_t如果是
aabb中国c 则是7wchar_t不算结尾的0
----------------------------
不用 str.AllocSysString();
用Unicode,就没问题如果非Unicode,就判断每个字符首位是否为'1'(中文),是的话,后面两个就算一个,自己计算
是想求这个 "aabb中国c" 的长度为7?printf( "%d",_tcsclen( "aabb中国c" ) ); // 7
我也是用个CString来计算的,别扭啊,所以才上来咨询的.
PS:我的问题不是求"aabb中国c"的长度,我的问题是指这种转化,怎么能使bstr的length()的指为实际我CString的值
还有没有更好的办法?
------------------------
请修改 Microsoft 的 Platform SDK