C++中strcpy()该怎么用?

时间:2022-09-05 22:51:22
在visual studio 2013中,编写如下程序:
String::String(const String & st)
{
num_strings++;
len = st.len;
str = new char[len + 1];
     std::strcpy(str, st.str);
}
运行时,总是出现如下提醒,使编译无法通过:
错误 1 error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.


该怎么办?????

8 个解决方案

#1


看提示啊,strcpy_s已经替换了strcpy,用strcpy_s吧。微软的就是这样,新的编译工具就要用新的语法,老的就被淘汰了。
除非你还会VC6,估计编译没问题的。

#2


把std::strcpy()改成std::strcpy_s()还是不行,出现这样的提示:
IntelliSense:  namespace "std" 没有成员 "strcpy_s"

把std::strcpy()改成strcpy_s()还是不行,出现如下提示:
IntelliSense:  没有与参数列表匹配的 重载函数 "strcpy_s" 实例
            参数类型为:  (char *, char *const)
        error C2660: “strcpy_s”: 函数不接受 2 个参数

两种情况都不行,该咋办???

#3


 std:: 去掉,包含相应的头文件。

#4


strcpy(str, len, st.str);

#5


去掉了std::还是不行,头文件#include<cstring>也包含了

#6


如果要标准C++,不要微软的那些Windows改版的库函数,可以用gcc编译器的,比如Code::Blocks,轻量级。

#7


#include "stdafx.h"
#include <string.h>


int _tmain(int argc, _TCHAR* argv[])
{
int len;
len = 10;
char str[10], *dtr;

dtr = new char[len + 1];

strcpy(dtr, str);

return 0;
}
这段代码我在VS2013下测试过,没问题的。
期中strcpy函数必须包含头文件#include <string.h>,当然你可以用string.h, wchar.h, mbstring.h其中之一。

#8


引用 4 楼 DelphiGuy 的回复:
strcpy(str, len, st.str);


应该是strcpy_s(str, len, st.str);  C++中strcpy()该怎么用?

#1


看提示啊,strcpy_s已经替换了strcpy,用strcpy_s吧。微软的就是这样,新的编译工具就要用新的语法,老的就被淘汰了。
除非你还会VC6,估计编译没问题的。

#2


把std::strcpy()改成std::strcpy_s()还是不行,出现这样的提示:
IntelliSense:  namespace "std" 没有成员 "strcpy_s"

把std::strcpy()改成strcpy_s()还是不行,出现如下提示:
IntelliSense:  没有与参数列表匹配的 重载函数 "strcpy_s" 实例
            参数类型为:  (char *, char *const)
        error C2660: “strcpy_s”: 函数不接受 2 个参数

两种情况都不行,该咋办???

#3


 std:: 去掉,包含相应的头文件。

#4


strcpy(str, len, st.str);

#5


去掉了std::还是不行,头文件#include<cstring>也包含了

#6


如果要标准C++,不要微软的那些Windows改版的库函数,可以用gcc编译器的,比如Code::Blocks,轻量级。

#7


#include "stdafx.h"
#include <string.h>


int _tmain(int argc, _TCHAR* argv[])
{
int len;
len = 10;
char str[10], *dtr;

dtr = new char[len + 1];

strcpy(dtr, str);

return 0;
}
这段代码我在VS2013下测试过,没问题的。
期中strcpy函数必须包含头文件#include <string.h>,当然你可以用string.h, wchar.h, mbstring.h其中之一。

#8


引用 4 楼 DelphiGuy 的回复:
strcpy(str, len, st.str);


应该是strcpy_s(str, len, st.str);  C++中strcpy()该怎么用?