使用 strcpy_s()
函数,我想将前三个字符串整理到最后一个字符串中以打印我的全名。这就是我所拥有的,但它不起作用,因为我使用的是 char*
字符串而不是 std::string
s。
#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/