英吋 C++

從 char* 轉換成 LPCWSTR


發現直接用 (LPCWSTR) 強轉會失誤 囧
幸好給我找到哩


char a[] = "aaa";
WCHAR wsz[64];
swprintf(wsz, L"%S", a);
LPCWSTR p = wsz;


void aaa(char* src)
{
        WCHAR wsrc[MAX_PATH];
        swprintf(wsrc, L"%S", src);        // 此時的 wsrc 就可當 LPCWSTR 使用哩
}


參考:
        
kimklai的札記

4則迴響

  1. 請問我也出現同樣的問題 是在使用MessageBox(NULL,"xxx","xxx",MB_OK) 我該怎麼屎"xxx"可以被讀呢?

  2. 現在 MessageBox 會因應你所設定的環境分成 MessageBoxA(…) 和 MessageBoxW() 前者用來處理 ANSI字串,後者處理寬字元 第一種方法就是直接強制使用其中一種A或W使用 第二種方法就是改設定,專案 > 屬性 > 組態屬性 > 一般 > 字元集,選 擇你所要的環境^^ 另外,經過高人指點,這種轉型方式其實沒有真正轉換,改天有空會在補 上他傳授給我的正確轉法@@

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.