在写COM组件的时候遇到BSTR转换问题

来源:互联网 发布:什么软件直播赚钱 编辑:程序博客网 时间:2024/05/16 17:17

大家知道,COM是一种规范,里面的字符串用的是宽字节字符集,它是一套双字节字符集。如何将BSTR转换成MFC的CString呢?

(1)将BSTR变量转换成_bstr_t类,如下

BSTR Cat = NULL;

Cat = SysAllocString(L("My Text!"));

_bstr_t ret = (_bstr_t)Cat;

(2)将_bstr_t转换成CString,如下

CString str;

str = (LPCSTR)ret;

这样就OK了。如果直接将BSTR转换成CString类型,有的人这样做:

BSTR bstr; 

CString strSql; 

CString 转换 BSTR:

 bstr = strSql.AllocSysString(); //可以

BSTR 转换CString: 

strSql = (LPCSTR)bstr;//会出问题

原因是BSTR是一个指针,对于C++,Windows头文件wtypes.h中定义如下:
  typedef wchar_t WCHAR;
  typedef WCHAR OLECHAR;
  typedef OLECHAR __RPC_FAR *BSTR;

原创粉丝点击