1

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

char * data;
unsigned int dataSize;

dataSize非零且通常很大(兆字节)

以下代码有效:

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

stream.eof()是假的,firstByte 是1,这是正确的

以下代码不起作用:

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

stream.eof()为真,firstByte 为-1,这是不正确的

我知道 strstream 已被弃用,但在这种情况下,它避免了分配和复制两次传入数据,这很好。但是为什么 peek 和 eof 不起作用?

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

4

0 回答 0