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

[复制链接]
查看11 | 回复5 | 2018-4-13 11:44:31 | 显示全部楼层 |阅读模式
strcpy(szName,strText);
szName是char类型的,而strText是CString型的变量,怎么办 啊??书上就是这么写的,可是我的vs2008不能编译通过、。
什么是下表???

回复

使用道具 举报

千问 | 2018-4-13 11:44:31 | 显示全部楼层
你在vs2008中默认字符集是UNICODE字符集,CString中字符以wchar_t的形式来存储的,而不是char。你在项目-》属性-》配置属性 有一个字符集,可以改字符集,改成多字节字符集就行了。...
回复

使用道具 举报

千问 | 2018-4-13 11:44:31 | 显示全部楼层
szName必须是一个缓冲区,比如说char szName[100];当然也可以是动态分配的内存。CString有提供的到const char*的隐式转换,所以以前这样的代码可能可以通过,现在可以有多种方法来代替。第一个是用CString的GetBuffer来获取字符串到新的缓冲区中去第二个strcpy( szName, ( const char...
回复

使用道具 举报

千问 | 2018-4-13 11:44:31 | 显示全部楼层
string类型与char类型是有重要区别的,前者就是存有若干字母或者数字符号的集合,理论上可以存储无穷多位,但是后者不同,它有固定的已经开辟好的空间,并且用\0结束,而strcpy函数是拷贝的后者类型,必须有指定的结束符号,所以两者不能拷贝,编译出错,解决方法是不使用该函数,最简单的方法就是避免两者混用,必须用的话可以用下标的方式一一赋值,...
回复

使用道具 举报

千问 | 2018-4-13 11:44:31 | 显示全部楼层
强行转换(LPCTSTR)或.GetBuffer(1)...
回复

使用道具 举报

千问 | 2018-4-13 11:44:31 | 显示全部楼层
strcpy(szName,(char*)(LPCTSTR)strText);...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行