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

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:39:54
strcpy(szName,strText);
szName是char类型的,而strText是CString型的变量,怎么办 啊??书上就是这么写的,可是我的vs2008不能编译通过、。
什么是下表???

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

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

szName必须是一个缓冲区,比如说char szName[100];当然也可以是动态分配的内存。
CString有提供的到const char*的隐式转换,所以以前这样的代码可能可以通过,现在可以有多种方法来代替。
第一个是用CString的GetBuffer来获取字符串到新的缓冲区中去