2009-07-26
_bstr_t類型 - [C++]
http://wangw.blogbus.com/logs/43003776.html
com組件傳輸字符串有固定的標準,就是bstr,這樣才能在不同的語言裏調用,試想你傳的是c的某個字符串類型,vb又如何調用呢?ado是個com組件所以傳的也是bstr,使用_bstr_t不但方便接收,而且方便處理。
比如
_bstr_t str("sfalkj");//用char*來構造
bstr str1=str;//str1是雙字節的
char *str2=str;//str2是單字節的
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
0x3abc
^BSTR pointer
so you can use operator LPCTSTR to get the "abc".