bstr t使用陷阱

2021-07-13 01:30:26 字數 852 閱讀 7962

在使用的時候我們可以定義乙個變數_bstr_t strtest;

然後會這樣賦值(或者使用寬字元的形式):

strtest = "";

strtest = "test";

然後我們有另外的字串類,比如stl中wstring,我們定義乙個變數wstring stlstr;

然後通過賦值操作stlstr = strtest將strtest的值賦給stlstr,一切正常。

但是有些時候_bstr_t可以為nullptr,比如這樣賦值

_bstr_t strtest = (const

char*)nullptr;

如果此時我們再次呼叫stlstr = strtest;將出現問題。正確的用法是需要先判斷下strtest是否為nullptr。可以按照下邊的方法來做賦值操作:

stlstr = (!strtest)?l

"":strtest;

下邊是一段完整的測試**:

_bstr_t strtest = (const

wchar_t*)nullptr;

//錯誤用法

std::wstring stlstr = strtest;//此處會出現異常

//正確用法

std::wstring stlstr = (!strtest)?l"":strtest;

實際上我們自己使用過程中是不會特意賦值為nullptr的,但是微軟的office介面經常會返回乙個空的_bstr_t物件,使用的時候務必要小心。

C qsort 使用陷阱

我相信使用stl提供的排序介面比自己實現排序演算法更高效,也更具有通用性,能節省 而且對所有種類的資料的排序函式都是qsort,也提高了 的可讀性。在今天的工作中,qsort卻把我折騰了一番,我犯了個小錯誤,在程式設計領域,小錯誤可以導致大後果,事後寫了針對qsort的測試程式,如下 qsortte...

bstr t與CString相互轉換

bstr t與cstring相互轉換 bstr t bstr cstring strsql cstring bstr t bstr bstr t strsql bstr t cstring strsql lpcstr bstr bstr寬字串與cstring相互轉換 bstr bstr cstrin...

ios 記憶體使用陷阱

在iphone開發過程中,中的記憶體洩露我們很容易用記憶體檢測工具leaks 檢測出來,並一一改之,但有些是因為ios 的缺陷和用法上的錯誤,leaks 檢測工具並不能檢測出來,你只會看到大量的記憶體被使用,最後收到didreceivememorywarning,最終導致程式崩潰。以下是開發過程中遇...