私は C++ 文字列を扱ってchar *
おりstd::string
、strcpy()
. パラメータとして受け取るので、次のようにキャストする必要がありますstrcpy()
。char *
std::string destination;
unsigned char *source;
strcpy((char*)destination.c_str(), (char*)source);
コードは正常に動作し、デバッガーでプログラムを実行すると、 の値*source
が に格納されますdestination
が、何らかの奇妙な理由でステートメントで出力されません
std::cout << destination;
使ってみたら気づいた
std::cout << destination.c_str();
値が正しく出力され、すべて問題ありません。なぜこれが起こるのですか?unsigned char*
または(stringstreams に) をコピーするより良い方法はありますか?これは、コピー操作のように文字列を指定した場合にのみ発生するchar*
ようです。std::string
foo.c_str()
編集:「なぜこれを行うのですか?」という質問に答えるためにstrcpy()
、わかりやすい例を使用しています。割り当てよりも複雑な場合もあります。たとえば、バッファのパラメータとして aを受け取る C ライブラリの関数にa を使用するstrncpy()
か、a を渡して、文字列 A の X 量だけを文字列 B にコピーする必要があります。std::string
char *