_bstr_t類型(轉)

2009-07-26

_bstr_t類型 - [C++]
http://wangw.blogbus.com/logs/43003776.html

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". 
發佈了116 篇原創文章 · 獲贊 4 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章