c++ - 编写一个 ostream 过滤器?

标签 c++ iostream

我想写一个简单的 ostream,它包装一个参数 ostream 并在将它传递到参数流之前以某种方式更改流。转换很简单,例如更改字母或删除单词

ostream 继承的简单类会是什么样子?我应该覆盖哪些方法?

最佳答案

std::ostream 不是实现过滤的最佳位置。它没有适当的虚函数来让您执行此操作。

您可能想要编写一个派生自 std::streambuf 的类,其中包含一个包装的 std::ostream(或一个包装的 std::streambuf),然后使用此 std::streambuf 创建一个 std::ostream

std::streambuf 有一个虚函数 overflow,您可以覆盖它并在将字节传递给包装的输出类之前使用它来更改字节。

关于c++ - 编写一个 ostream 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707740/

相关文章:

c++ - 传递带有捕获的 lambda 作为另一个 lambda 的参数,可能吗?

c++ - 剖析特定函数 C++

c# - 将字符串从非托管 c++ dll 返回到 c#

c++ - 在 C++ 代码中应该使用哪个 C I/O 库?

python - 无法从 Cython 重定向错误流

c++ - Cin 显示默认值

c++ - 如何将文件中的日期时间解析为 C++ 中的类

c++ - 使用 `bdrv_pread(..)` 或替代品读取 qcow2 图像的内容

C++ 使用 toString() 方法有什么问题

c++ - 为什么 std::hex 和 std::oct 标志不起作用?