c++中将LPCTSTR转换成char*,(char*)强制转换输出不是的。

 我来答
百度网友6eab688
推荐于2017-11-25 · TA获得超过4691个赞
知道大有可为答主
回答量:962
采纳率:50%
帮助的人:950万
展开全部
LPCTSTR根据 UNICODE 宏,会编译为两个版本,
如果定义过这个宏,按Unicode字符集处理,LPCTSTR 是 const wchar *;
如果未定义过这个宏,按多字节字符集处理,LPCTSTR 是 const char *
这两个都不能直接转换成非const 的变量,只能采用“赋值”的方式
char buf[100];
strcpy_s(buf, 100, CT2CA(str));
CT2CA是字符集转换的宏,可以正确将LPCTSTR的两种版本处理成const char *
相思丶猫2C
2012-08-23 · TA获得超过1198个赞
知道小有建树答主
回答量:1432
采纳率:50%
帮助的人:957万
展开全部
首先要明白ascii和unicode。
ascii:char *ch = "hello";
unicode:wchar_t ch = L"hello";
如果是ascii,LPCTSTR = const char *cc; 肯定不能把const转换成非const的,
可以这样:strcpy_s()
如果是unicode:LPCTSTR = const wchar_t *cc;
那就得用WideCharToMultiByte函数。
ascii和unicode编码的选择可以在项目属性里设置。
追问
怎么能将LPCTSTR转成char* ,强制转换只输出第一个字符,为什么啊
追答
因为你用的是unicode版本:
比如L"ab";实际是 'a','\0','b','\0';所以不能强制转换。
如上述WideCharToMultiByte
或者设置编码为ascii。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式