救命!!!!一个关于BSTR向char*转换的问题!我在一个BSTR中保存了一个“汉字”字符串,怎么转换成char*呢?

AlexXXX 2002-01-18 10:29:38
我程序如下:
char cha[255];
CString cs = "我是天才SuperMan";
BSTR bstrCS = cs.AllocSysString();
wcstombs(cha,bstrCS,wcslen(bstrCS));
cha[wcslen(bstrCS)] = '\0';
CString css = "SuperMan";
BSTR b = css.AllocSysString();
wcstombs(cha,b,wcslen(b));
cha[wcslen(b)] = '\0';
转换英文可以,转换汉字不行
我猜是由于汉字是双字节字符的原因。
这该怎么办?
...全文
85 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
spdia 2002-01-19
不需要mfc,setlocale与_wsetlocale功能相同,只不过参数不同.

setlocale(LC_CTYPE,"chs");
_wsetlocale(LC_CTYPE,L"chs");
回复
nichang 2002-01-19
有專門對char*和BSTR 之間轉換的函數,widechartomulti和mutlibyteto,記不太清楚了可以試一下。
回复
zifzhu 2002-01-19
你要这么做有意义吗?
回复
cuceeyar 2002-01-19
可以用wsting
回复
蒋晟 2002-01-19
CComBstr
回复
AlexXXX 2002-01-19
To zifzhu() 
我写了一个COM组件,组件中用到了IXMLDOMNodeList作为接口参数,我需要从其中的一个Node中取出起text,这个text是一个BSTR的,我需要从BSTR转成char*,和其他的一些的一些字符串进行一些模糊比较的计算,所以不得不转。

To nichang() 
WideCharToMultiByte吗?
回复
zifzhu 2002-01-19
双字节的中文转成单字节的char会有溢出的,除非你用强制类型转换把中文拆成两个char。
回复
蒋晟 2002-01-19
宽字符串就是unicode
回复
xiaoxiaohan 2002-01-19
13. 如何在Unicode与ANSI之间转换字符串?
Windows函数MultiByteToWideChar用于将多字节字符串转换成宽字符串;函数WideCharToMultiByte将宽字符串转换成等价的多字节字符串。
回复
AlexXXX 2002-01-18
to nichang(),谢谢你的建议,我想知道一种不需要使用MFC的方法。
to spdia(spdia),这个是否需要MFC?他和_wsetlocale有啥区别?
回复
spdia 2002-01-18
setlocale(LC_CTYPE,"chs");
回复
nichang 2002-01-18
直接將BSTR 賦給CString,再將CStrng轉成char*試試應該可以
回复
发动态
发帖子
非技术类
创建于2007-09-28

1612

社区成员

VC/MFC 非技术类
申请成为版主
社区公告
暂无公告