CString與BSTR之間的轉換

2021-07-09 07:15:18 字數 1200 閱讀 2264

?

cstring------>bstr

cstring sname = _t("hello");

bstr bsname = sname.allocsysstring();

sysfreestring(bsname);

?cstring------>ccombstr

ccombstr cbsname(sname); //unicode

:呼叫建構函式

ccombstr(lpcolestr psrc)

//mbcs

:   

呼叫建構函式

ccombstr(lpcstr psrc)

ccombstr cbsname1 = sname; //

行為與上行一樣

在變數宣告中的賦值操作只會呼叫建構函式

,而其他賦值操作則只呼叫

operator=()方法,

例如unicode

環境下:

cbsname1 = sname;        //

呼叫ccombstr& operator=(lpcolestr psrc)

? bstr------>cstring 1.

使用巨集cole2t

bstr bstr = sysallocstringlen(olestr(

「***\0yyy

」), 7);

cstring s = cole2t(bstr);   //

將bstr

轉換為lptstr

,不可使用

ole2t

或者cstring s = cole2ct(bstr); //

將bstr

轉換為lpctstr

,不可使用

ole2ct

sysfreestring(bstr);

2.使用中間類_bstr_t

_bstr_t t(bstr, false);

s = t;

由於bstr的實際長度是由字串之前的4個位元組指定的,所以它可以包含null字元,轉換為cstring之後最後的那四個字元"\0yyy"丟失了。

? ccombstr------>cstring 因為

ccombstr

過載了operator bstr

,所以上面對

bstr

使用的方法也完全適用於

ccombstr

BSTR與CString之前的轉換

一.bstr是進行com程式設計時試用的字串型別,對bstr型別變數進行複製有兩種方式 1.cstring提供的轉換函式,cstring allocsysstring來進行轉換 cstring str hockey is best bstr bstr str.allocsysstring 2.利用強...

BSTR與CString之前的轉換

一.bstr是進行com程式設計時試用的字串型別,對bstr型別變數進行複製有兩種方式 1.cstring提供的轉換函式,cstring allocsysstring來進行轉換 cstring str hockey is best bstr bstr str.allocsysstring 2.利用強...

CString 型轉化成 BSTR 型

當我們使用 activex 控制項程式設計時,經常需要用到將某個值表示成 bstr 型別。我們先來看看variant typedef tagvariant variant struct tagvariant variant name 4 variant name 3 variant name 2 d...