При выделении iostream
из stringbuf
, все работает хорошо
std::stringbuf fb;
std::iostream fs(&fb);
char i = 17, j = 42;
fs.write(&i, 1);
fs.write(&j, 1);
char x, y;
fs.read(&x, 1);
fs.read(&y, 1);
std::cout << (int) x << " " << (int) y << std::endl;
17 42
Однако, если я попытаюсь изменить свой stringbuf
использовать filebuf
это больше не работает
std::filebuf fb;
fb.open("/tmp/buffer.dat", std::ios::in | std::ios::out | std::ios::trunc);
std::iostream fs(&fb);
...
0 0
Гекс говорит мне "/tmp/buffer.dat"
содержит то, что он должен
filebuf
без закрытия и повторного открытия файла?Вам нужно искать буфер обратно в начало, прежде чем продолжить чтение:
fs.write(&i, 1);
fs.write(&j, 1);
char x, y;
fs.pubseekpos(0);
fs.read(&x, 1);
fs.read(&y, 1);