C++ std::strstream未正确实现eof和peek?

C++ std::strstream未正确实现eof和peek?,c++,string,stream,strstream,C++,String,Stream,Strstream,我有一个字节数据源,定义如下: char * data; unsigned int dataSize; 数据大小不为零,通常相当大的兆字节 以下代码起作用: std::string str(data, dataSize); std::istringstream stream(str); char firstByte = stream.peek(); stream.eof为false,firstByte为1,这是正确的 以下代码不起作用: std::strstream stream(data,

我有一个字节数据源,定义如下:

char * data;
unsigned int 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已被弃用,但在这种情况下,它避免了分配和复制两次传入数据,这很好。但为什么peek和eof不起作用

编辑:如果我用std::istrstream替换std::strstream,效果很好。这没关系,因为我实际上只是从数据中读取数据。 但是为什么std::strstream在这种情况下不起作用呢?我只是好奇