這裡總結了bstr, _bstr_t, ccombstr, cstring四種字串型別之間的轉換。其中bstr為基本資料型別,另三個為字串類。
首先宣告四個型別的變數:
bstr strbigbstr = ::sysallocstring( _t( "bstr" ));
_bstr_t strsmallbstr( _t( 「_bstr_t」 )) ;
ccombstr strccombstr( _t( 「ccombstr」 ))
cstring strcstring( _t( 「cstring」 ));
ccombstr strtempccombstr( _t( 「tempccombstr」 ));
1. bstr to other type
bstr轉換為其他型別非常方便,直接使用類的建構函式即可
// bstr to _bstr_t
strsmallbstr = _bstr_t( strbigbstr );
// bstr to ccombstr
strccombstr = ccombstr( strbigbstr );
// bstr to cstring
strcstring = cstring( strbigbstr );
2. _bstr_t to other type
基本思想是先把_bstr_t轉化為tchar*, 再轉化為其他型別。
// _bstr_t to bstr
strtempccombstr = ccombstr( static_cast( strsmallbstr ));
strbigbstr = strtempccombstr.m_str;
// _bstr_t to ccombstr
strccombstr = ccombstr( static_cast( strsmallbstr ));
// _bstr_t to cstring
strcstring = cstring( static_cast( strsmallbstr ));
_bstr_t類過載了操作符char*和wchar_t*(tchar*的兩種形式),所以這裡並不是使用強制轉換,而是呼叫了_bstr_t的函式。
3. ccombstr to other type
基本思想是使用ccombstr的公有成員變數m_str進行轉換。
// ccombstr to bstr
strbigbstr = strccombstr.m_str;
// ccombstr to _bstr_t
strsmallbstr = _bstr_t( strccombstr.m_str );
// ccombstr to cstring
strcstring = cstring( strccombstr.m_str );
4. cstring to other type
基本思想是先把cstring轉化為lpctstr, 再轉化為其他型別。
// cstring to bstr
strtempccombstr = ccombstr( static_cast( strcstring ));
strbigbstr = strtempccombstr.m_str;
// cstring to _bstr_t
strsmallbstr = _bstr_t( static_cast( strcstring ));
// cstring to ccombstr
strccombstr = ccombstr( static_cast( strcstring ));
cstring類過載了操作符lpctstr,所以這裡並不是使用強制轉換,而是呼叫了cstring的函式。
5. 注意事項:
其他型別轉化為bstr型別時都使用的ccombstr作為中轉,因為這樣不需要自己釋放記憶體。但是要注意的是,轉換後bstr指向的是ccombstr的記憶體,所以一旦ccombstr被銷毀了,bstr也就失效了,這樣會導致不可預知的錯誤。所以一定要保證ccombstr大於或等於bstr的週期。
下面用法是錯誤的:
strbigbstr = ccombstr(( lpctstr )strcstring ).m_str;
因為ccombstr在此條語句結束後就被析構了。
字串型別轉換總結
這裡總結了bstr,bstr t,ccombstr,cstring四種字串型別之間的轉換。其中bstr為基本資料型別,另三個為字串類。首先宣告四個型別的變數 bstr strbigbstr sysallocstring t bstr bstr t strsmallbstr t bstr t ccom...
字串轉換總結
在程式設計中經常遇到一些有關於字串轉換的問題,如果你不熟悉經常會弄錯,下面我就把我在專案開發過程中遇到的有關字串轉換的一些問題進行一下總結。1 char wchar t 多位元組字串到寬位元組字串的轉換可以使用函式multibytetowidechar,寬位元組字串到多位元組字串可以使用widech...
轉換之字串型別
將js中四種基本型別轉換為字串型別,常用的三種方式 1.tostring 2.string 常量or變數 3.常量or變數 或常量or變數 1.對於number型別和boolean型別可以通過變數名稱.tostring 的方式來轉換 數值型別轉換為字串型別 let value 123 定義乙個變數v...