связывание потоков C ++ - PullRequest
3 голосов
/ 04 мая 2009

Я думал о «сцеплении» пары cost iostreams вместе, чтобы дважды отфильтровать ввод. Я использую gzstreams для чтения сжатых файлов zlib, и я думал о кодировании потока, который читает из потока и выполняет преобразования кодирования. Возможно, передав открытый поток в качестве параметра конструктора ... Как вы думаете, это может быть лучше всего достигнуто?

1 Ответ

6 голосов
/ 04 мая 2009

Я не использовал это, но filtering_stream * boost2 может помочь.

В качестве примера я нашел сообщение списка рассылки с indent.hpp , которое реализует выходной фильтр, который выводит отступ:

boost::iostreams::filtering_ostream out; 
indent_filter::push(out,2); 
out.push(std::cout); 

И используйте это так:

out << "Hello Filter!\n" 
    << indent_in 
    << "this is\n" 
    << "indented\n" 
    << indent_out 
    << "until here\n" 
    ; 

Что приведет к выводу:

Hello Filter! 
  this is 
  indented 
until here 
...