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にテキストを追加し続ける方法

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

strcatではなく使用しmemcpyます。

または、 `memcpy(str +2、" CDEFG "、5);を使用します。

[そして、値を出力するときに+1を削除します。これは、DEFGHではなくCDEFGを確実に出力するためです。これは、明らかにcoutストリーム処理のバグです...]

于 2013-03-12T11:51:28.327 に答える
0

書いた文字数を追跡し、ポインターを調整します。あなたの例では:

memcpy(str, "AB", 2);

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

それに加えて、文字列は NULL で終了しません。最後のコピーでは、'\0' もコピーするために余分な文字が 1 つ必要です。strcpy を使用するか、何よりも std::string を使用します。

#include <string>
int main()
{
  std::string s = "AB";
  s += "CDEFG";
}
于 2013-03-12T11:56:42.370 に答える