У меня есть источник данных байтов, определенный следующим образом:
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 устарел, но в этом случае он избегает выделения и копирования дважды входящих данных, что приятно. Но почему взгляд не работает?
РЕДАКТИРОВАТЬ: если я заменю std::strstream
от std::istrstream
, это работает нормально. И это нормально, так как я на самом деле только читаю данные.
Но почему std :: strstream не работает в этом случае? Мне просто интересно.
Задача ещё не решена.