重複の可能性:
strcpy 使用時のアクセス違反?
私は私を悩ませている何かに来ました
char* p = "Hello";
strcpy (p,"bye");
これは常にエラーになります。ポインタ文字列で strcpy を使用するにはどうすればよいですか。
(そして、std::string を使用するように誰も私に言わないでください)
ありがとうございました
char* p = "Hello"; //BAD - OBSOLETE!
strcpy (p,"bye");
優れたコンパイラは、最初の行に警告 (またはエラー) を表示する必要があります。これは廃止されており、言語では次のように記述する必要があるためです。
char const * p = "Hello"; //GOOD
これを書くと(とにかくこれを書く正しい方法です)、すべてが明確になります:constデータを指し、ポイントするp
データは変更できないことを意味します。 .p
strcpy
これを上書きしたい場合はp
、配列として宣言する 1 つの方法:
char p[] = "Hello"; //OK
strcpy (p,"bye"); //OK - for any string (2nd arg) of length <= 5
C++ では、可能な限りstd::string
、char*
およびを使用しないでください。char[]
したがって、コードを記述する C++ の方法は次のようになります。
#include <string> //must include this first
std::string p = "Hello";
p = "bye"; //overwrite it.
とても簡単!
まず、次のように文字列にメモリを割り当てる必要があります。
char *p = new char[BUFFER_LENGTH];
次に、コンテンツをコピーできます。
strcpy(p, "bye");
使い方はこちらのページをご覧ください。
完了したら、メモリを削除することを忘れないでください。
delete[] p;
あなたの問題を間違った方法で理解した場合は、より多くの情報を提供することもできます