文章目录
将string
的内容copy
到数组中时:
string s1 = "aaa";
s1.copy(buff, 2, 0);
error C4996: 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::copy':
Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct.
To disable this warning, use -D_SCL_SECURE_NO_WARNINGS.
See documentation on how to use Visual C++ 'Checked Iterators'
经过过翻译:
带参数的函数调用可能是不安全的——这个调用依赖调用者来检查传递的值是否正确。 要禁用此警告,使用-D_SCL_SECURE_NO_WARNINGS。 参见如何使用Visual c++ 'Checked iterator '的文档。
查找MSDN得知,该成员函数因为可能存在下标越界风险已经被弃用,并提供了basic_string::_Copy_s
代替basic_string::copy
方法一:(代替)
s1._Copy_s(buff, 2, 0);
方法二:
也可以通过预处理禁用该警告的方式消除:(但是不建议)
#pragma warning(disable:4996)
str1.copy(str, 1, 0);
//无提示,通过编译。
方法三:
右键项目-->属性--> 【通用配置】/【c/c++】/ 【预处理器】中第一行 【预处理器定义】中右边点击编译 ,在最下方加入`_SCL_SECURE_NO_WARNINGS`确定即可;
注意: 添加的是_SCL_SECURE_NO_WARNINGS
去掉提示错误-D_SCL_SECURE_NO_WARNINGS
前面的-D
;