如何定义自我自定义的 COUT

how to define a self customized cout?

本文关键字:自我 自定义 COUT 定义 何定义      更新时间:2023-10-16
std::streambuf buf;
ostream mycout(&buf);
mycout << "Hellow, World!" << endl;

我使用上面的语句来初始化 ostream 的实例。我希望"mycout"与"std::cout"完全一样工作,所有输出将显示到STDOUT(屏幕)。上面的代码不起作用。编译错误:

'std::basic_streambuf<char,std::char_traits<char>>::basic_streambuf': cannot access protected member declared in class 'std::basic_streambuf<char,std::char_traits<char>>'

我该怎么办?

如果你想让它完全像 std::cout 一样工作,你可以直接使用 cout 的 streambuf 来构造它:

std::ostream mycout{std::cout.rdbuf()};

但是对于真正的应用程序,如果你想这样做,你可能应该三思而后行,因为它要么比使用 std::cout 没有好处,要么迫使人们总是使用 mycout 而不是 std::cout,他们可能不习惯/忘记/...