2024年4月26日发(作者:)

bstr_t类型到底是类型呢?用的时候也可以直接_bstr_t bstr="abcd";

还可以

_bstr_t bstr="abcd";

CString str=(char *)bstr;//_bstr_t莫非是指针?指针可以赋常量字符串?

我在ADO数据库编程中用如下语句:

CString str=(m_RecordSet->GetCollect("Name")).bstrVal;//m_RecordSet

_RecordsetPtr类型

(m_RecordSet->GetCollect("Name")).bstrVal是BSTR类型

说明BSTR可以直接赋给CString类型,从编译器中得知BSTR是unsigned short*类

型,怎么可以直接赋给CString对象呢?

实在不清楚这三个的本质区别,请高手指点!

网友回复:CString str=(char *)bstr;//_bstr_t莫非是指针?指针可以赋常量字符串?

_bstr_t有这几个成员

operator const wchar_t*( ) const throw( );

operator wchar_t*( ) const throw( );

operator const char*( ) const;

operator char*( ) const;

网友回复:我搜集的资料:May this can help you.

7.关于CString和其他一些自动化类型的相互转换问题.

未参考的资源: 在各种字符串类型之间进行转换

/zh-cn/library/

类型类别:CString ,VARIANT,BSTR,_t_btr,等

预备知识:

BSTR:根据MSDN,他的内部结构为:4字节的长度前缀(字节单位),字符串(宽),2字节结

束标志0x0000.平常的BSTR是指向字符串的第一字节,并非前缀.比如定义BSTR

myBstr=L” I am a happy BSTR”,这样其实不正确,并没有正确生成前缀.应该这样: BSTR

MyBstr = SysAllocString(L"I am a happy BSTR");这样就会在内存分配时就会加上前缀

和结束标志.

BSTR(Basic STRing,Basic字符串)是一个OLECHAR*类型的Unicode字符串。它被

描述成一个与自动化相兼容的类型。