c++中将LPCTSTR转换成char*,(char*)强制转换输出不是的。
2个回答
展开全部
LPCTSTR根据 UNICODE 宏,会编译为两个版本,
如果定义过这个宏,按Unicode字符集处理,LPCTSTR 是 const wchar *;
如果未定义过这个宏,按多字节字符集处理,LPCTSTR 是 const char *
这两个都不能直接转换成非const 的变量,只能采用“赋值”的方式
char buf[100];
strcpy_s(buf, 100, CT2CA(str));
CT2CA是字符集转换的宏,可以正确将LPCTSTR的两种版本处理成const char *
如果定义过这个宏,按Unicode字符集处理,LPCTSTR 是 const wchar *;
如果未定义过这个宏,按多字节字符集处理,LPCTSTR 是 const char *
这两个都不能直接转换成非const 的变量,只能采用“赋值”的方式
char buf[100];
strcpy_s(buf, 100, CT2CA(str));
CT2CA是字符集转换的宏,可以正确将LPCTSTR的两种版本处理成const char *
展开全部
首先要明白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编码的选择可以在项目属性里设置。
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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询