читать и писать из filebuf, используя iostream

При выделении 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 без закрытия и повторного открытия файла?

0

Решение

Вам нужно искать буфер обратно в начало, прежде чем продолжить чтение:

fs.write(&i, 1);
fs.write(&j, 1);
char x, y;

fs.pubseekpos(0);

fs.read(&x, 1);
fs.read(&y, 1);
0

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


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