Я пытаюсь создать istream
, который читает непосредственно из необработанного буфера памяти.
Я нашел хороший способ сделать это в другом сообщении здесь:
class membuf : public basic_streambuf<char>
{
public:
membuf(char* p, size_t n) {
setg(p, p, p + n);
}
};
Затем Я создаю свой istream
, используя этот membersuf
:
membuf mb(dataPointer, dataLength);
istream reader(&mb);
Затем я читаю с помощью операторов getline ()
и >>
, и все замечательный. Однако я не могу использовать seekg ()
для перемотки назад в начало моего буфера, а istream :: tellg ()
всегда возвращает -1
.
Нужно ли мне написать еще код, чтобы заставить их работать, или это обречено на неудачу?