修改libstdc ++ - 文件ios_init.cc中的v3

时间:2012-01-07 09:03:56

标签: c++

我想修改ios_init.cc,以便cout输出不会显示在屏幕上。我没有重新编译二进制文件的选项。

我正在尝试ios_base::Init::Init()

是否有人知道我需要注释的内容。

1 个答案:

答案 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;
}

See it run!