次のように定義されたバイトデータソースがあります。
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::strstream
とstd::istrstream
、これは正常に機能します。実際にはデータから読み取るだけなので、これは問題ありません。しかし、その場合、なぜ std::strstream が機能しないのでしょうか? 私はただ興味があります。