码迷,mamicode.com
首页 > 编程语言 > 详细

实战c++中的string系列--string到LPCWSTR的转换

时间:2015-12-12 14:03:25      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

今天再来介绍一下如何从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

实战c++中的string系列--string到LPCWSTR的转换

标签:

原文地址:http://blog.csdn.net/wangshubo1989/article/details/50274103

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!