你好,
这是我想要实现的目标。我想要一个流,默认输出到std::cout
但也可以使用std::cerr
,它允许覆盖最后输出的行。
我知道这不适用于 seekp,因为 std::cout 不可搜索。我规避这种情况的方法是改为输出'\b'
字符。我也知道这个解决方案不允许返回一个队列,这很好。
我设法得到了一个解决方案,但它并不好(顺便说一下,链接中给出的版本适用于真正的控制台,即使它不适用于 ideone - ideone 显示\b
为空白字符)。我想要一个像标准流这样的接口。就像是:
Logger log(std::cerr);
log << "hello" << 1 << erase << "hi" << std::endl;
这应该输出"hello1\b\b\b\b\b\bhi"
,std::cerr
用户只会看到"hi"
.
我设法通过继承得到了一些接近std::ostream
的东西,std::streambuf
但它没有编译(见链接)。
这个问题的解决方案是什么?请注意,我并不特别喜欢我的解决方案。任何让我实现“流式”的解决方案都可以。