繁体   English   中英

从ostream或ostream_iterator派生,使流在C ++中成为漂亮的打印机?

[英]Derive from ostream or ostream_iterator to make a stream pretty printer in C++?

我有将复杂对象的表示转储到流中的代码。 该表示形式使用大括号和大括号来表示嵌套对象的开始和结束。 我认为最好将所有空白留在原始输出之外,并且如果需要,可以将漂亮的打印作为装饰图案,而不是漂亮地打印表示形式的格式。

漂亮的打印算法很简单:检查要输出的下一个字符,如果它是一个大括号,则输出换行+大括号+换行。 否则仅输出字符。

我可以将此装饰器实现为从ostream_iterator派生的类或从ostream派生的类。 哪个更常用? 创建ostream包装器有什么弊端吗?

建议从std::ostream派生的唯一原因是在使用派生类构造std::streambuf并使用其初始化基本std::ostream时。 我认为根本没有理由从std::ostream_iterator<...>派生任何东西。

取而代之的是,您将从std::streambuf派生并重写overflow()以执行所需的任何过滤器操作。 为了方便起见,您可以从std::ostream派生出构造便利流。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM