程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 實戰c++中的string系列--string到LPCWSTR的轉換

實戰c++中的string系列--string到LPCWSTR的轉換

編輯:C++入門知識

實戰c++中的string系列--string到LPCWSTR的轉換


今天再來介紹一下如何從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函數。所以牢記這個函數的用法。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved