我创造了一定数量的记忆
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开始
答案 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";
}