c++ - 如何使用 strcpy_s() 将多个 char* 字符串复制到一个字符串中?

标签 c++ c-strings strcpy strcat

使用 strcpy_s() 函数,我想将前三个字符串整理到最后一个字符串中以打印我的全名。这就是我所拥有的,但它不起作用,因为我使用的是 char* 字符串而不是 std::strings。

#include <iostream>
using namespace std;

int main()
{
    char str_first[] = "Nerf_";
    char str_middle[] = " Herder";
    char str_last[] = "42";

    char str_fullName[35];

    strcpy_s(str_fullName, (str_first + str_middle + str_last).c_str());
    cout << str_fullName;
}

有什么建议吗?

最佳答案

这应该接近您正在寻找的内容,严格使用 strcpy_s将字符串连接在一起:

#include <string.h>
#include <iostream>
using namespace std;

int main()
{
    char str_first[] = "Nerf_";
    char str_middle[] = " Herder";
    char str_last[] = "42";

    char str_fullName[35];

    int index = strcpy_s(str_fullName, sizeof str_fullName, str_first);
    index += strcpy_s(str_fullName + index, sizeof str_fullName - index, str_middle);
    index += strcpy_s(str_fullName + index, sizeof str_fullName - index, str_last);
    cout << str_fullName;
}

index 变量有几个用途:(1) 在构建字符串时为输出 str_fullName 字符串提供新索引,以及 (2) 减去从 sizeof str_fullName 中,它在构建字符串时“调整”可用缓冲区大小。

需要注意的是,您应该通过 strcpy_s 的输出添加溢出检查,并且(正如其他人所指出的)这样做有更好的模式可以遵循,但作为一项学术练习,这里可能有一些很好的东西值得学习。

关于c++ - 如何使用 strcpy_s() 将多个 char* 字符串复制到一个字符串中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61602469/

相关文章:

c++ - 从平面方程绘制任意平面,OpenGL

c++ - 为什么我没有实现其中一个功能就可以编译成功?

c++ - 如何使用模板 extern 关键字分隔测试类型?

c - 分配字符数组和字符串

c - 尝试溢出但未按预期工作

c++ - 如何将 C++ 变量存储在寄存器中

c - 如何更改通过引用传递给函数的字符串的值?

c - 如何从 C 中的函数的每次调用返回不同的字符串?

c++ - 使用 `strcpy` 删除二维数组中的一行(字符)时是否有任何错误?

c - 使用 C 中的条件按字典顺序对 3 个字符串进行排序