我有一个这样定义的字节数据源:
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::strstream
为std::istrstream
,这很好用。这没关系,因为我实际上只是从数据中读取。但是为什么 std::strstream 在这种情况下不起作用?我只是好奇。