不能将参数 3 从“char *”转换为“LPWSTR”

sky_lily_1985 2012-05-16 12:36:43
程序如下:
char *p =new char[lvalue];
RegQueryValue(HKEY_LOCAL_MACHINE,_T("SoftWare\\http://www.xiaonei.com\\admin"),p,&lvalue);
然后出现如下问题:
“RegQueryValueW”: 不能将参数 3 从“char *”转换为“LPWSTR”

请问如何解决?
...全文
926 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿桂天山 2012-08-09
  • 打赏
  • 举报
回复
VS2008中

项目-》属性-》配置属性-》常规-》字符集

选择“未设置”

就可以解决了
阿桂天山 2012-08-09
  • 打赏
  • 举报
回复
VS2008中

项目-》属性-》配置属性-》常规-》字符集

选择“未设置”

就可以解决了
深圳老码农 2012-07-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
程序如下:
char *p =new char[lvalue];
RegQueryValue(HKEY_LOCAL_MACHINE,_T("SoftWare\\http://www.xiaonei.com\\admin"),p,&lvalue);
然后出现如下问题:
“RegQueryValueW”: 不能将参数 3 从“char *”转换为“LPWSTR”

请问如何解决?……
[/Quote]
UP
何书文老师 2012-07-12
  • 打赏
  • 举报
回复 1
有帮助不错
  • 打赏
  • 举报
回复
char *p =new char[lvalue];
改为
TCHAR *p =new TCHAR [lvalue];
jianghandaxue 2012-05-16
  • 打赏
  • 举报
回复
用UNICODE方式处理呗.......TCHAR取
yhp1888 2012-05-16
  • 打赏
  • 举报
回复
ANSI和Unicode到底是什么

简单地说:
ANSI是美国要家标准(我没有精确用词,只表示一下意思),每个数字、字母、标点符号都用一个字节表示,汉字用2个字节表示;
UNICODE是国际标准(我没有精确用词,只表示一下意思),每个数字、字母、标点符号、汉字都用2个字节表示;

ANSI是历史发展的中间产物。最终是要淘汰的,尽管我们现在的PC机默认还是ANSI,但它是为了兼容以前的ANSI,新的东西如手机基本上都用UNICODE了。
meiguakee 2012-05-16
  • 打赏
  • 举报
回复
原因上头都说了。那个ANSI和Unicode到底是什么,说白了就是字符集,再白了就是他们存储方式不一样。多搜一些类似的东西看看大概就知道了,一些历史发展过程留下来的问题了。。。更清楚的,我也不知道~~
sky_lily_1985 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
Unicode宽字符的问题。按照2楼的应该没错。
或者你改为:
wchar_t *p =new wchar_t[lvalue];
RegQueryValue(HKEY_LOCAL_MACHINE,_T("SoftWare\\http://www.xiaonei.com\\admin"),(LPWSTR)p,&lvalue);
再或者事先定义一个ANSI转换Unicode的函数:
……
[/Quote]
老是遇到这样的问题,着实迷茫了,不知道什么时候出问题,为什么是这样啊,ANSI和Unicode到底是什么,有什么不同,为什么要这样子换来换去的
振翅高飞 2012-05-16
  • 打赏
  • 举报
回复
Unicode宽字符的问题。按照2楼的应该没错。
或者你改为:
wchar_t *p =new wchar_t[lvalue];
RegQueryValue(HKEY_LOCAL_MACHINE,_T("SoftWare\\http://www.xiaonei.com\\admin"),(LPWSTR)p,&lvalue);
再或者事先定义一个ANSI转换Unicode的函数:
wchar_t * ANSIToUnicode( const char* str )
{
int textlen ;
wchar_t * result;
textlen = MultiByteToWideChar( CP_ACP, 0, str,-1, NULL,0 );
result = (wchar_t *)malloc((textlen+1)*sizeof(wchar_t));
memset(result,0,(textlen+1)*sizeof(wchar_t));
MultiByteToWideChar(CP_ACP, 0,str,-1,(LPWSTR)result,textlen );
return result;
}
char *p =new char[lvalue];
RegQueryValue(HKEY_LOCAL_MACHINE,_T("SoftWare\\http://www.xiaonei.com\\admin"),ANSIToUnicode(p),&lvalue);

至于以上具体用那一种方法,你自己可以尝试一下。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧