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,估计编译没问题的。
除非你还会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 个参数
两种情况都不行,该咋办???
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其中之一。
#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
应该是strcpy_s(str, len, st.str);
#1
看提示啊,strcpy_s已经替换了strcpy,用strcpy_s吧。微软的就是这样,新的编译工具就要用新的语法,老的就被淘汰了。
除非你还会VC6,估计编译没问题的。
除非你还会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 个参数
两种情况都不行,该咋办???
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其中之一。
#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
应该是strcpy_s(str, len, st.str);