Jamesが言ったように、std::string
...を使用します。ただし、グローバルな構築と破棄の順序は、翻訳ユニット間で定義されていないことに注意してください。
したがって、それでも使用する場合はchar*
、を使用してstrcpy
(を参照man strcpy
)、buf
NULで終了することを確認してください。strcpyはをbuf
宛先にコピーしますX
。
char buf[256];
// ...
strcpy(X, buf);
を使用する理由は他にもあることを付け加えておきますstd::string
。を使用する場合は、宛先バッファ( )にソースバッファを受信するのに十分なメモリがstrcpy
あることを確認する必要があります。X
この場合、256はよりもはるかに大きいためstrlen("test_1")
、問題が発生します。この再割り当てXを回避する方法があります(このようにX = new char[number_of_characters_needed]
)。またはX
、の代わりに256のchar配列に初期化しchar*
ます。
IIRC、strcpy
静的に定義された文字列リテラル(char * X = "test_1"など)は未定義の動作です...ストーリーの教訓は... C ++です!使用してくださいstd::string
!:)
(あなたはc ++を初めて使用したと言ったので、「未定義動作」はコンピュータがあなたの顔を殴ることができることを意味するのを聞いたことがないかもしれません...それは通常あなたのプログラムがクラッシュすることを意味します)