strcpy_s函数使用举例,不要使用_countof函数
时间: 2024-12-17 08:26:15 浏览: 26
`strcpy_s`是C++11引入的安全版本的字符串复制函数,用于防止缓冲区溢出。它与`strcpy`类似,但是接收第二个参数`n`来限制复制的字符数量,而不是直到遇到空字符`'\0'`。
**使用举例**:
```cpp
#include <cstring>
#include <string>
std::string dest;
const std::string source = "Hello, World!";
// 使用 strncpy_s 而非 strncpy,以避免溢出
size_t len = std::min(source.size(), std::string::npos); // 获取源字符串长度,但不超过数组大小
strncpy_s(dest.c_str(), dest.capacity(), source.c_str(), len);
// 添加终止符'\0'
dest.resize(len); // 如果没满,添加终止符
dest[len] = '\0'; // 或者直接设置
// 打印结果
cout << dest; // 输出: Hello, World!
```
在这个示例中,我们先计算源字符串的长度,然后只复制指定数量的字符到目标字符串`dest`。这样可以确保不会超出目标字符串的容量。
阅读全文