現在、私はと呼ばれる文字列ストリームを持っていData
ます。次を使用して、文字列ストリームの先頭を探しています。
Data.seekp(0, std::ios::beg);
次に、stringstream の最初の 8 バイトに 2 つの整数を書き込んでみます (以前は、最初の 8 バイトは 0 に設定されていました)。
Data.write(reinterpret_cast<char*>(&dataLength),sizeof(int));
Data.write(reinterpret_cast<char*>(&dataFlags),sizeof(int));
dataLength
Visual C++ デバッガーを使用してブレークポイントを設定すると、それが 12 と 0 に等しいことがわかりますdataFlags
。したがって、それぞれ 12 と 0 を書き込む必要があります。
2つの整数を書き込んだ後、効果がないように見えました。次に、次のコードを使用して stringstream データを出力します。
char* b = const_cast<char*>(Data.str().c_str());
for (int i = 0; i < dataLength; i++)
{
printf("%02X ",(unsigned char)b[i]);
}
最初の 12 バイトを 2 つの整数 (最初の整数 != 0) で上書きしたにもかかわらず、データの最初の 8 バイトがまだ 0 であることがわかります。
stringstream のデータが正しく上書きされないのはなぜですか?