在分配的内存中添加文本

时间:2013-03-12 11:48:55

标签: c++ memcpy

我创造了一定数量的记忆

char* str;
str = char(char*) malloc(15);

当我这样做时

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

输出是str:DEFGH值的值 我所看到的是它覆盖了以前的memcpy 我如何继续向str添加文本,以便每次添加文本时都会将其添加到上一个str值,而不是覆盖以前的值并从start开始

3 个答案:

答案 0 :(得分:2)

您使用std::string

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

答案 1 :(得分:0)

使用strcat而不是memcpy

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

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

答案 2 :(得分:0)

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

memcpy(str, "AB", 2);

memcpy(str+2, "CDEFG", 5)

除此之外,您的字符串不会以NULL结尾。对于最后一个副本,您还需要一个额外的字符来复制'\ 0'。要么使用strcpy,要么最好使用std :: string:

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