使用选项从类中自定义cout

时间:2016-06-06 21:38:56

标签: c++ cout

我想有一个像cout一样但有一些选项的功能。

例如:MyFunc(0) << "Cats like to drink milk " << 2 << endl; 当它为0时,不应该是任何输出

当它像这样:

MyFunc(1) << "Cats like to drink milk " << 2 << endl;

我应该看到输出&#34;猫喜欢喝牛奶2&#34;。我从几个论坛上读到需要使用ostream,但我不确定如何将它用于我的目的。 MyFunc基本上是一个类,构造函数有1,0个选项。

我见过这样的事情,但我不知道它是如何运作的。

Log& operator<< (std::ostream &(*f)(std::ostream &)){
cout << *f;
return *this; 
}

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

它基本上是这样的:

class CoutPlus {
public:
    CoutPlus(int& i) : m_bOn(i) {}
    template<class T> CoutPlus& operator<<(const T& val) {
        if (m_bOn)
            std::cout << val;
        return *this;
    }
private:
    bool m_bOn;
};

您决定如何处理空构造函数和赋值,以及是否实现其他ostream的成员函数。