1

次のように定義されたバイトデータソースがあります。

char * data;
unsigned int dataSize;

dataSizeゼロではなく、多くの場合非常に大きい (メガバイト)

次のコードが機能します。

std::string str(data, dataSize);
std::istringstream stream(str);
char firstByte = stream.peek();

stream.eof()は false で、firstByte は です1。これは正しいです

次のコードは機能しません。

std::strstream stream(data, dataSize);
char firstByte = stream.peek();

stream.eof()は true で、firstByte は です-1。これは正しくありません

strstream が非推奨であることは知っていますが、この場合、着信データの 2 回の割り当てとコピーを回避できます。これは素晴らしいことです。しかし、peek と eof が機能しないのはなぜですか?

編集: で置き換えるstd::strstreamstd::istrstream、これは正常に機能します。実際にはデータから読み取るだけなので、これは問題ありません。しかし、その場合、なぜ std::strstream が機能しないのでしょうか? 私はただ興味があります。

4

0 に答える 0