0

我已经创建了一定数量的内存

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

4

3 回答 3

2

你使用一个std::string

#include <string>
#include <iostream>
int main()
{
  std::string str = "AB";
  str+= "CDEFG";
  std::cout << str << "\n";
}
于 2013-03-12T11:50:25.993 回答
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";
}
于 2013-03-12T11:56:42.370 回答
0

使用strcat而不是memcpy.

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

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

于 2013-03-12T11:51:28.327 回答