在使用的時候我們可以定義乙個變數_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,最終導致程式崩潰。以下是開發過程中遇...