当我尝试做这样的事情时:
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/