std :: strstream没有正确执行eof和peek?

时间:2014-12-02 14:30:23

标签: c++ string stream strstream

我有一个像这样定义的字节数据源:

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已被弃用,但在这种情况下,它避免了分配和复制两次传入数据,这很好。但为什么偷看和嘲笑不起作用?

编辑:如果我将std::strstream替换为std::istrstream,则可以正常使用。这是可以的,因为我实际上只是从数据中读取数据。 但是为什么std :: strstream在这种情况下不起作用?我只是好奇。

0 个答案:

没有答案