我有一个像这样定义的字节数据源:
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在这种情况下不起作用?我只是好奇。