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

2025-01-07 02:48:25
推荐回答(5个)
回答1:

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

回答2:

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

试试看啊。

回答3:

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

回答4:

强行转换(LPCTSTR)
或.GetBuffer(1)

回答5:

strcpy(szName,(char*)(LPCTSTR)strText);