2012年7月22日 星期日

Usage of W2A, A2W API

很久沒寫windows API的用法, 雖然這兩個也不是什麼特別的API, 但是在常對字串轉換的人而言, 這兩個API是很有用的, 看一下MSDN的說法:
http://msdn.microsoft.com/en-us/library/87zae4a3(v=vs.80).aspx


微軟的說法是很好玩的, 其實有用過WideCharToMultiByte, 或是MultiByteToWideChar都知道, 要取得字串長度以及轉換後的長度再轉換, 對於這種API也是沒辦法的事, 因為必須知道轉換後的長度, 才能進行轉換, 不過還好ATL的macro有寫了一組很方便的轉換, 所以我們就可以使用W2A及A2W。

顧名思意, W2A就是把wchar_t轉成char的macro, A2W就是把char轉成wchar_t的版本。
使用方法更簡單, 只要#include <atlbase.h>, 及在code裡使用USES_CONVERSION;就可以了, sample code:

void func(LPSTR lpsz) {
USES_CONVERSION;
...
LPWSTR x = A2W(lpsz)
// Do something with x
...
}
W2A也是同樣的方法囉…

沒有留言: