字串型別轉換總結

2021-05-23 11:17:06 字數 2172 閱讀 3588

這裡總結了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...