##實戰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; //確保以 '\0' 結尾
::MessageBox(NULL, buffer, NULL, NULL);
delete buffer;
buffer = null;
~~~
看到了吧 又一次用了MultiByteToWideChar函數。所以牢記這個函數的用法。?
[http://blog.csdn.net/wangshubo1989/article/details/49210385](http://blog.csdn.net/wangshubo1989/article/details/49210385)
- 前言
- string與整型或浮點型互轉
- 指定浮點數有效數字并轉為string
- string的替換、查找(一些與路徑相關的操作)
- string的分割、替換(類似string.split或是explode())
- string的初始化、刪除、轉大小寫(construct erase upper-lower)
- string的遍歷(使用下標還是iterator)
- std::string與MFC中CString的轉換
- string到LPCWSTR的轉換
- std:vector<char> 和std:string相互轉換(vector to stringstream)
- CDuiString和string的轉換(duilib中的cduistring)
- string的連接(+= or append or push_back)
- 函數返回局部變量string(引用局部string,局部string的.c_str()函數)
- 將string用于switch語句(c++做C#的事兒, switch中break還是return厲害)
- 不要使用memset初始化string(一定別這么干)