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

VC++:char*或string转换成LPCWSTR

时间:2014-10-22 14:27:06      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:http   io   ar   使用   strong   sp   on   art   html   

Visual Studio 2010默认是Unicode的,在VC 6.0中编译成功的项目在VS2010中常会出现类型错误。 经常出现的错误是:不能从const char *转换为LPCWSTR 如使用CreateDC("DISPLAY",NULL,NULL,NULL)就会报错,如果使用强制转换(LPCWSTR)"DISPLAY",虽然能够通过,但是编码会出错。 可行的办法是使用 TEXT("DISPLAY")转换, CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);  另一种方法是: 项目菜单——项目属性(最后一个)——配置属性——常规——项目默认值——字符集,将使用Unicode字符集改为未设置即可。

LPCWSTR
MSDN 原文:

An LPCWSTR is a 32-bit pointer to a constant string of 16-bit Unicode Charactor, which may be null-terminated.
This type is declared as follows:
typedef const wchar_t* LPCWSTR;

LPCWSTR是一个指向unicode编码字符串的32位指针,所指向字符串是wchar型,而不是char型。
因为在VS2005以后,编码方式默认为Unicode,部分函数在使用时默认调用Unicode方式(函数名+W,exp:MessageBox+W=MessageBoxW),而非ASNI方式(函数名+A,exp:MessageBox+A=MessageBoxA)。

如果遇到参数错误(cannot convert parameter * from ‘const char [**]‘ to ‘LPCWSTR‘),可以考虑察看声明,如果有ASNI方式的只要在函数后面加个A就可以了,或者在定义参数时把char * 改为WCHAR * 。

参考链接:http://baike.baidu.com/view/7716877.htm?fr=aladdin

VC++:char*或string转换成LPCWSTR

标签:http   io   ar   使用   strong   sp   on   art   html   

原文地址:http://www.cnblogs.com/klcf0220/p/4042932.html

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