您的位置:首页 > 其它

BSTR _bstr_t char* 之间的相互转换

2013-02-07 23:29 302 查看
void test2()
{
//char * <---> _bstr_t
char *s1="123";
_bstr_t bt1=s1;
bt1+=" _bstr_t";
char *p=(char*)bt1;
printf("%s\n",p);

//char * <---> BSTR
BSTR b1=(BSTR)p; //BSTR本质 char*或w_char*
char *p2=(char*)b1;
printf("%s\n",(char*)b1);
printf("%s\n",p2);

//_bstr_t <---> BSTR,使用char*作为中介
BSTR b2=(BSTR)(char*)bt1;
_bstr_t bt2=(char*)b2;
printf("%s\n",(char*)b2);
printf("%s\n",(char*)bt2);
}

原理:

..\VC98\Include\RPC.H

#if defined(_WIN32) && !defined(OLE2ANSI)

typedef WCHAR OLECHAR; 

#else

typedef char      OLECHAR;

#endif

# define __RPC_FAR

typedef /* [wire_marshal] */ OLECHAR __RPC_FAR *BSTR;  //BSTR本质 char*或w_char*

..\VC98\Include\comutil.h 

class _bstr_t {

//...

public:

operator const char*() const throw(_com_error); //提供了 char*的运算符方法

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: