C++流的链接

3
我在考虑将几个C++ iostream链接在一起,使输入经过两次过滤。我正在使用gzstreams来读取zlib压缩文件,并考虑编写一个从流中读取并执行编码转换的流。也许可以通过将已打开的流作为构造函数参数传递来实现...您认为这样做最好的方法是什么?

“chaining” 是什么意思? - anon
正如eed3si9n所发表的,就像boost::iostreams过滤器一样。但我想知道是否通过将先前打开的流传递给从public std::streambuf派生的自定义类构造函数或使用其他方法来完成它是一个好的设计。 - piotr
1个回答

6

我没有使用过这个,但是boost的过滤流可能会有所帮助。

举个例子,我找到了一个邮件列表帖子,其中包含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 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接