救命!!!!一个关于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';
转换英文可以,转换汉字不行
我猜是由于汉字是双字节字符的原因。
这该怎么办?
...全文
138 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
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*試試應該可以

1,658

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧