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