c++ - 为什么 MSVC++ 认为 "std::strcat"是 "unsafe"? (C++)

标签 c++ warnings strcat strcat-s

当我尝试做这样的事情时:

char* prefix = "Sector_Data\\sector";
char* s_num = "0";
std::strcat(prefix, s_num);
std::strcat(prefix, "\\");

等等等等,我收到警告

warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead.

为什么 strcat 被认为是不安全的,有没有办法在不使用 strcat_s 的情况下消除此警告?

此外,如果消除警告的唯一方法是使用 strcat_s,它是如何工作的(语法方面:显然它不需要两个参数)。

最佳答案

如果您使用的是 C++,为什么不避免整个困惑并使用 std::string。没有任何错误的相同示例如下所示:

std::string prefix = "Sector_Data\\sector";
prefix += "0";
prefix += "\\"

无需担心缓冲区大小和所有其他问题。如果你有一个接受 const char * 的 API,你可以只使用 .c_str() 成员;

some_c_api(prefix.c_str());

关于c++ - 为什么 MSVC++ 认为 "std::strcat"是 "unsafe"? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/936468/

相关文章:

c++ - 工作程序在 'clean machine' 上遇到非法指令错误?

c++ - 澄清 "saying"指针声明

c++ - 成员(member)功能和非成员(member)功能如何选择?

c++ - 强制列表初始化矩阵的大小

c- 格式 "%d"需要类型为 'int *' 的参数,但参数 3 的类型为 int

jsf - 警告 : FacesMessage(s) have been enqueued, 但可能未显示

c++ - strcat 替代问题 C++

c - 尝试连接二维数组的元素时出现段错误

r - 如何处理 K-means 函数中的 "empty cluster"警告?

c - 向 C 中的 const 数组添加新元素