有比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 的縮寫 |