ATL字符串轉換宏

有比MultiByteToWideChar和WideCharToMultiByte更簡單的字符串轉換宏,你相信嗎?
頭文件 d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlconv.h
若是要使用ATL字符串轉換宏,請先定義 USES_CONVERSION;  // 只須要調用一次,就能夠在函數中進行屢次轉換ide

下面一個例子:     函數

USES_CONVERSION;  // 只須要調用一次,就能夠在函數中進行屢次轉換     
char a[12] = "china";     
::MessageBoxW( NULL, A2W(a), L"", MB_ICONASTERISK|MB_TASKMODAL|MB_OK );


使用 ATL 轉換宏,因爲不用釋放臨時空間,因此使用起來很是方便。可是考慮到棧空間的尺寸(VC 默認2M),使用時要注意幾點:    
spa

一、只適合於進行短字符串的轉換;     code

二、不要試圖在一個次數比較多的循環體內進行轉換;     blog

三、不要試圖對字符型文件內容進行轉換,由於文件尺寸通常狀況下是比較大的;     ci

四、對狀況 2 和 3,要使用 MultiByteToWideChar() 和 WideCharToMultiByte();字符串


使用 ATL 提供的轉換宏。  
io

A2BSTR OLE2A T2A W2A
A2COLE OLE2BSTR T2BSTR W2BSTR
A2CT OLE2CA T2CA W2CA
A2CW OLE2CT T2COLE W2COLE
A2OLE OLE2CW T2CW W2CT
A2T OLE2T T2OLE W2OLE
A2W OLE2W T2W W2T

上表中的宏函數,其實很是容易記憶:table

2 好搞笑的縮寫,to 的發音和 2 同樣,因此借用來表示「轉換爲、轉換到」的含義。
A ANSI 字符串,也就是 MBCS。
W、OLE 寬字符串,也就是 UNICODE。
T 中間類型T。若是定義了 _UNICODE,則T表示W;若是定義了 _MBCS,則T表示A
C const 的縮寫
相關文章
相關標籤/搜索