фильтр iostreaming boost получает пустые значения

Я попытался создать потоковый буфер для чтения и записи 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;

Чего не хватает?

Спасибо

0

Решение

setg устанавливает указатели для области чтения; это не влияет на
пишу.

Самое простое решение — использовать два разных streambuf,
MemBufIn а также MemBufOut: первые звонки setgи
второй setp, Если вы хотите двунаправленный поток, или
поиск поддержки становится все сложнее.

1

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector