Я попытался создать потоковый буфер для чтения и записи char *, используя boost :: iostreams:
class MemBuf : public std::streambuf
{
public:
MemBuf(char* s, std::size_t n)
{
setg(s, s, (char*)s+ n);
}
};
чтение работает нормально:
char myreadBuff[100];
myreadBuff[0] = 'a';
MemBuf mb (myreadBuff, 100);
istream istr (&mb);
cout << istr;
но написание не работает:
char mywriteBuff[100];
MemBuf mb(mywriteBuff, 100);
ostream ostr($mb);
ostr << "hello world";
cout << mywriteBuff;
Чего не хватает?
Спасибо
setg
устанавливает указатели для области чтения; это не влияет на
пишу.
Самое простое решение — использовать два разных streambuf
,
MemBufIn
а также MemBufOut
: первые звонки setg
и
второй setp
, Если вы хотите двунаправленный поток, или
поиск поддержки становится все сложнее.
Других решений пока нет …