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”
完成。