今天再来介绍一下如何从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与char、const char 的转换(data() or c_str())
- string的连接(+= or append or push_back)
- 函数返回局部变量string(引用局部string,局部string的.c_str()函数)
- 将string用于switch语句(c++做C#的事儿, switch中break还是return厉害)
- 不要使用memset初始化string(一定别这么干)