我已经创建了一定数量的内存
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
你使用一个std::string:
#include <string>
#include <iostream>
int main()
{
std::string str = "AB";
str+= "CDEFG";
std::cout << str << "\n";
}
跟踪你写了多少个字符并调整你的指针。在您的示例中:
memcpy(str, "AB", 2);
memcpy(str+2, "CDEFG", 5)
除此之外,您的字符串不会以 NULL 结尾。对于最后一个副本,您还需要一个额外的字符来复制 '\0'。要么使用 strcpy,要么最好使用 std::string:
#include <string>
int main()
{
std::string s = "AB";
s += "CDEFG";
}
使用strcat而不是memcpy.
或者使用 `memcpy(str +2, "CDEFG", 5);
[并在打印值时删除 +1,因为它肯定应该打印 CDEFG,而不是 DEFGH - 这显然是您的cout流处理中的一个错误......]