char [32]だけを含む構造体を使用してバイナリファイルに書き込んでいます。私は基本的に文字列配列のさまざまな計算を実行し、結果を連結することによって各データブロックをフォーマットする必要があります。私はNULL終了なしの文字配列にstd :: stringをコピーしようとしています。私がこれを読むほど、私はもっと混乱します。私が行う場合:C++ str :: stringをヌル終了のない文字配列にコピーする
struct block{
char data[32];
};
block blocks[2048];
std::string buffer;
buffer = "12345678123456781234567812345678";
strcpy(blocks[0].data, buffer.c_str());
は、私は、文字列から1つの文字を引く場合)(c_strとヌルターミネータを追加すると、文字列の長さ33になりますので、それは動作しますが、エラーを取得し、その後私は、NULLターミネータを持っています私は欲しくない。
strcpy(blocks[0].data, "12345678123456781234567812345678");
しかし、多くの場合、さまざまな配列の異なる文字列を連結する必要があるため、最初に文字列を作成したいと考えています。たとえば、私はstd :: stringでこれを行うことができます:
std::string buffer = stringArray1[0] + stringArray2[0];
strcpy(blocks[0].data, buffer.c_str());
しかし、私は再びヌルターミネーターを持っています。私はちょうどヌルターミネーターなしでstd :: stringの文字を正確にコピーしたいと思います。
私はVC++ 6.0を使用しています。
あなたはVC++ 6.0はちょうどIE 6 Hidiousのようなものであることを知っています。あなたがコンパイラを切り替える位置にいる場合は、そう速く行います。 –
ありがとうございました。私はmemcpyを使用して終了しました。私は誤ってstd :: string.dataの代わりにstd :: string.c_strを使用していました。また、通常はVS2010を使用していますが、これはVS6.0を超えるものをサポートするように更新されていない古いライブラリが必要な旧製品です。 –