今天再來介紹一下如何從string到LPCWSTR的轉換。
LPCWSTR是什麼類型呢?
看看如何定義的:
typedef const wchar_t* LPCWSTR;
顧名思義就是:
LPCWSTR是一個指向unicode編碼字符串的32位指針,所指向字符串是wchar型,而不是char型。
比如說MessageBoxW的第二、第三個參數就是LPCWSTR類型。
`MessageBoxW(__in_opt HWND hWnd, __in_opt LPCWSTR lpText,
__in_opt LPCWSTR lpCaption, __in UINT uType)`
所以問題來了,有一個string類型的字符串,如何通過MessageBoxW進行顯示呢?這就需要string到LPCWSTR類型的轉換了!!
string image_path = c:\avi.png;
size_t size = image_path.length();
wchar_t *buffer = new wchar_t[size + 1];
MultiByteToWideChar(CP_ACP, 0, response->image_path.c_str(), size, buffer, size * sizeof(wchar_t));
buffer[size] = 0; //確保以 '' 結尾
::MessageBox(NULL, buffer, NULL, NULL);
delete buffer;
buffer = null;
看到了吧 又一次用了MultiByteToWideChar函數。所以牢記這個函數的用法。