error C2664: strcpy : 不能将参数 2 从 CString 转换为 const char *

strcpy(szName,strText);szName是char类型的,而strText是CString型的变量,怎么办啊??书上就是这么写的,可是我的vs2008不... strcpy(szName,strText);
szName是char类型的,而strText是CString型的变量,怎么办 啊??书上就是这么写的,可是我的vs2008不能编译通过、。
什么是下表???
展开
 我来答
sys_master
推荐于2018-04-13 · TA获得超过7942个赞
知道小有建树答主
回答量:1202
采纳率:0%
帮助的人:724万
展开全部

你在vs2008中默认字符集是UNICODE字符集,CString中字符以wchar_t的形式来存储的,而不是char。你在项目-》属性-》配置属性 有一个字符集,可以改字符集,改成多字节字符集就行了。

花式码农
推荐于2016-08-17 · TA获得超过1.7万个赞
知道大有可为答主
回答量:4894
采纳率:0%
帮助的人:4752万
展开全部
szName必须是一个缓冲区,比如说char szName[100];当然也可以是动态分配的内存。
CString有提供的到const char*的隐式转换,所以以前这样的代码可能可以通过,现在可以有多种方法来代替。
第一个是用CString的GetBuffer来获取字符串到新的缓冲区中去
第二个strcpy( szName, ( const char*)strText);或者:
strcpy( szName, (LPCTSTR)strText);

试试看啊。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0becc05
2009-02-13 · TA获得超过1869个赞
知道小有建树答主
回答量:192
采纳率:0%
帮助的人:126万
展开全部
string类型与char类型是有重要区别的,前者就是存有若干字母或者数字符号的集合,理论上可以存储无穷多位,但是后者不同,它有固定的已经开辟好的空间,并且用\0结束,而strcpy函数是拷贝的后者类型,必须有指定的结束符号,所以两者不能拷贝,编译出错,解决方法是不使用该函数,最简单的方法就是避免两者混用,必须用的话可以用下标的方式一一赋值,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
abhl2468
2009-02-18 · TA获得超过380个赞
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
强行转换(LPCTSTR)
或.GetBuffer(1)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shangqt
2009-02-16 · TA获得超过159个赞
知道小有建树答主
回答量:291
采纳率:0%
帮助的人:119万
展开全部
strcpy(szName,(char*)(LPCTSTR)strText);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式