error C2664: 'strcpy' : cannot convert parameter 2 from 'LPCTSTR' to 'const char

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了error C2664: 'strcpy' : cannot convert parameter 2 from 'LPCTSTR' to 'const char相关的知识,希望对你有一定的参考价值。

我改成了 strcpy(ch,(char*)(LPCTSTR)str);可是还是不能正确输出,请问哪里有问题啊
在vs 2005下如何正确输出hello 啊;

// str.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "afx.h"
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])

CString str("hello");
char ch[6];
strcpy(ch,str);
cout<<ch[6];
return 0;

CString是MFC提供的类,字符串用UNICODE编码,而你的容器是char字符串类型为ANSI编码,所以强制转换始终会有些问题。最好使用string类型,功能甚至比CString更强大,使用string需要包含<string>头文件。你的程序错误的地方太多了,而且都之间关系都相互联系着的,我还是给你正确的代码吧。

另外你的同样的问题我都给你很详细地回答了,也费了些时间。如果下面的代码解决了你的问题,请一起把分给我吧。

// CPP文件
#include "stdafx.h"
#include "afx.h"
#include <iostream>
#include <string> //请加入这个头文件
using namespace std;

int _tmain(int argc, _TCHAR* argv[])

string str("hello"); // 初始化字符串,你可以使用任何字符串

char *ch = new char[str.length() + 1]; //动态分配缓存,这样长度始终是自适应的,非常灵活
strcpy(ch, str.c_str());
cout<<ch<<endl;

delete ch; // 释放缓存

return 0;
参考技术A 项目->属性->配置属性->常规->字符集 改成使用多种字符集 即可 如果是具体的字符串,直接在前面加_T()即可 参考技术B #include<iostream>
using namespace std;
int main()
cout<<"hello"<<endl;

c语言中strcpy跟mencpy哪个效率更高?

mencpy为内存拷贝函数,直接指针操作内存块,不考虑存储的内容,效率高,但操作不当容易出错
strcpy为字符串拷贝函数,必须提供源字符串指针和目标字符串指针 速度上比不过mencpy,但更具针对性,拷贝字符串时建议用strcpy不要用mencpy
参考技术A memcpy是内存拷贝,strcpy是字符串拷贝,当然是memcpy数度快。而且memcpy对数据没有限制,而strcpy要求拷贝的数据为字符,否则会出问题。 参考技术B 1:区别
memcpy可以拷贝任何数据类型的对象,指定拷贝的数据长度。
strcpy只能拷贝字符串了,它遇到'\0'就结束拷贝
memcpy()充分利用了机器字长为32位的特性(32位系统,一次内存读/写可操作4字节的数据, 对于64位系统,则一次可操作8字节数据)。先按4字节一组(movsl)拷贝,共复制n/4次;对剩下的零头再逐字节拷贝。如果支持,memcpy()还可以使用了MMX/SSE指令增加一次操作中的字节数,进一步提高效率。
3:健壮性
拷贝的缓冲区如果是非字符串,尽量用memcpy(),其实字符串使用memcpy也是很好的选择。你说的溢出可能是使用strcpy的\0结束问题或者是用memcpy指定的拷贝长度不对造成的

以上是关于error C2664: 'strcpy' : cannot convert parameter 2 from 'LPCTSTR' to 'const char的主要内容,如果未能解决你的问题,请参考以下文章

C++调试 错误error C2664 er ror C2440 求帮主

求助:error C2664: “CreateWindowExW”: 不能将参数 3 从“const char [8]”转换为“LPCWSTR”

全网首发:FFMPEG错误: error: implicit declaration of function ‘wcscpy‘/wcscmp; did you mean ‘strcpy‘strcmp?

error C2664: “StrCmpW”: 不能将参数 2 从“const char [12]”转换为“PCWSTR”

VS2012 error C2664: “std::make_pair”:无法将左值绑定到右值引用

Qt捕获不到这个异常(linux操作系统) try char *str=NULL; strcpy(str,"error"); //制