我想修改ios_init.cc
,以便cout
输出不会显示在屏幕上。我没有重新编译二进制文件的选项。
我正在尝试ios_base::Init::Init()
。
是否有人知道我需要注释的内容。
答案 0 :(得分:3)
您不希望修改任何标准库文件!
您希望停止std::cout
更新控制台。您可以redirecting std::cout
执行此操作。我将重定向链接到文件的示例,但您可以轻松修改它以重定向到任何地方:
#include <iostream>
class scoped_cout_silencer
{
public:
scoped_cout_silencer()
:backup_(std::cout.rdbuf())
{
std::cout.rdbuf(NULL);
}
~scoped_cout_silencer()
{
std::cout.rdbuf(backup_);
}
private:
scoped_cout_silencer(const scoped_cout_silencer& copy);
scoped_cout_silencer& operator =(const scoped_cout_silencer& assign);
std::streambuf* backup_;
};
int main()
{
std::cout << "Now you see me." << std::endl;
{
scoped_cout_silencer silence;
std::cout << "Now you don't." << std::endl;
}
std::cout << "Now you see me." << std::endl;
}