Я не мог найти ничего готового, поэтому я придумал:
class membuf : public basic_streambuf<char>
{
public:
membuf(char* p, size_t n) {
setg(p, p, p + n);
setp(p, p + n);
}
}
Использование:
char *mybuffer;
size_t length;
// ... allocate "mybuffer", put data into it, set "length"
membuf mb(mybuffer, length);
istream reader(&mb);
// use "reader"
Я знаю stringstream
, но, похоже, он не может работать с двоичными данными заданной длины.
Я придумываю свое колесо здесь?
ИЗМЕНИТЬ
- Он не должен копировать входные данные, просто создайте что-то, что будет перебирать данные.
- Он должен быть портативным - по крайней мере, он должен работать как под gcc, так и с MSVC.