私は 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::stringfoo.c_str()
編集:「なぜこれを行うのですか?」という質問に答えるためにstrcpy()、わかりやすい例を使用しています。割り当てよりも複雑な場合もあります。たとえば、バッファのパラメータとして aを受け取る C ライブラリの関数にa を使用するstrncpy()か、a を渡して、文字列 A の X 量だけを文字列 B にコピーする必要があります。std::stringchar *