覆盖以类似流的方式输出到std :: cout的最后一行

时间:2015-11-13 00:23:54

标签: c++ c++11 ostream streambuf

您好,

这是我想要实现的目标。我希望有一个流,默认输出到std::cout,但也可以使用std::cerr,这样可以覆盖最后输出的行。

我知道这对findp不起作用,因为std :: cout不可寻找。我绕过这种方式的方法是输出'\b'个字符。我也知道这个解决方案不允许返回一行,那很好。

我设法get a solution但它并不好(顺便说一句,链接中给出的版本与真实控制台一起工作,即使它不适用于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::ostreamstd::streambuf来获得something close,但它没有编译(请参阅链接)。

这个问题的解决方案是什么? 请注意,我并不特别重视我的解决方案。任何解决方案都让我实现了#stream;&#34;流的方式&#34;没关系。

0 个答案:

没有答案