_bstr_t类型

1._bstr_t是个对bstr的类,具体定义可以看comutil.h。   
  com组件传输字符串有固定的标准,就是bstr,这样才能在不同的语言里调用,试想你传的是c的某个字符串类型,vb又如何调用呢?ado是个com组件所以传的也是bstr,使用_bstr_t不但方便接收,而且方便处理。
2.严格地说_bstr_t不属于对bstr的类,它可以直接转换成bstr型,也可以直接转换成普通的char*型   
  比如   
  _bstr_t   str("sfalkj");//用char*来构造   
  bstr   str1=str;//str1是双字节的   
  char   *str2=str;//str2是单字节的
3._bstr_t   是一个封装了char*和wchar_t*之间相关的操作,已方便在使用com对象时的字符串操作,也就是说你可以不必关心给_bstr_t对象赋值了什么类型的字符串,或者要与什么类型的字符串相加等操作,它的重载函数会自动选择合适的函数进行操作的。
4.将BSTR或_bstr_t转换为CString
  strValue为CString类,   
  bstrSql为_bstr_t类,bstr2为BSTR   
  strValue.Format("%s,%s'",(LPCTSTR)bstr1,bstr2);   
  若bstrSql前面不加LPCTSTR则不能正确赋值,   
  strValue=bstr2   可将BSTR类型的字符直接赋给CString   
  而strValue=bstr1   不能将_bstr_t类的字符直接赋给CString   
  这样strValue=(LPCTSTR)bstr1就可以。
  这种赋值方法合不合适。   
  在COM接口中,参数若为字符串,为什么一定要用BSTR  
BSTR   stores   an   extra   word   before   the   string,like   this:   
  0x3abc   
        ^BSTR   pointer   
  so   you   can   use   operator   LPCTSTR   to   get   the   "abc". 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值