C++ 在已分配的内存中添加文本

C++ 在已分配的内存中添加文本,c++,memcpy,C++,Memcpy,我创造了一定数量的记忆 char* str; str = char(char*) malloc(15); 当我这么做的时候 memcpy(str, "AB", 2); memcpy(str, "CDEFG", 5) cout<<"Value of str: "<<str<<endl; memcpy(str,“AB”,2); memcpy(str,“CDEFG”,5) 您是否可以使用std::string: #include <string> #

我创造了一定数量的记忆

char* str;
str = char(char*) malloc(15);
当我这么做的时候

memcpy(str, "AB", 2);
memcpy(str, "CDEFG", 5)
cout<<"Value of str: "<<str<<endl;
memcpy(str,“AB”,2);
memcpy(str,“CDEFG”,5)

您是否可以使用
std::string

#include <string>
#include <iostream>
int main()
{
  std::string str = "AB";
  str+= "CDEFG";
  std::cout << str << "\n";
}
#包括
#包括
int main()
{
std::string str=“AB”;
str+=“CDEFG”;

std::cout使用
strcat
而不是
memcpy

或使用`memcpy(str+2,“CDEFG”,5)


[并在打印值时删除+1,因为它肯定会打印CDEFG,而不是DEFGH-这显然是
cout
流处理中的一个错误…]

跟踪您写入的字符数并调整指针。在您的示例中:

memcpy(str, "AB", 2);

memcpy(str+2, "CDEFG", 5)
除此之外,您的字符串不会以NULL结尾。对于最后一个副本,您还需要一个额外的字符来复制“\0”。请使用strcpy,或者最好使用std::string:

#include <string>
int main()
{
  std::string s = "AB";
  s += "CDEFG";
}
#包括
int main()
{
std::string s=“AB”;
s+=“CDEFG”;
}

为什么不直接使用strcat
。因此,为什么不首先使用
std::string
memcpy(str+2,“CDEFG”,5);
std::string str=“AB”;str+=“CDEFG”
完成。