1

你好,

这是我想要实现的目标。我想要一个流,默认输出到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但它没有编译(见链接)。

这个问题的解决方案是什么?请注意,我并不特别喜欢我的解决方案。任何让我实现“流式”的解决方案都可以。

4

0 回答 0