Я думал о «цепочке» пары C++ iostreams toghether для фильтрации ввода дважды. Я использую gzstreams для чтения сжатых файлов zlib, и я думал о кодировании потока, который читает из потока и выполняет преобразования кодировки. Возможно, передав открытый поток в качестве параметра конструктора ... Как вы думаете, что это может быть лучше всего выполнено?chaining C++ streams
2
A
ответ
6
Я не использовал это, но помощь filtering_stream может помочь.
В качестве примера я нашел a mailing list post с 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
Что вы подразумеваете под «цепью»? – 2009-05-04 06:58:40
Как eed3si9n отправлено, так же, как boost :: фильтр iostreams. Но мне было интересно, если бы это был хороший дизайн, чтобы сделать это сам, передав ранее открытый поток в свой собственный конструктор классов, полученный из public std :: streambuf или с помощью другого подхода. – piotr