std :: strstream не реализует eof и заглядывает правильно?

У меня есть источник данных байтов, определенный следующим образом:

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 не работает в этом случае? Мне просто интересно.

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]