如何自定义ostream c ++

时间:2017-11-28 12:29:59

标签: c++ stream ostream

我有一个班级:

class Y{
   public:
       int x;
       Y();
};

主:

int main(){
    Y y;
    y.x = 10;
    y << mystream;

    return 0;
}

我只想在键入y<<mystream时执行任何操作。 我尝试了我的课程标题:

friend Y mystream(Y y);
friend ostream mystream(ostream o, Y y)

等等,但没有什么不起作用。有任何想法来定制这个流吗?

祝你好运!

3 个答案:

答案 0 :(得分:1)

您可以重载插入运算符“&lt;&lt;”将class A对象作为其LHS和ostream对象作为其rhs

class A{
    public:
        int x;

        friend ostream& operator << (A& lhs, ostream& out){
            out << lhs.x;
            return out;
        }
};



int main(){

    A a;
    a.x = 7;
    a << cout; // 7

    cout << endl;
    return 0;
}

答案 1 :(得分:0)

你必须超载&#39;&lt;&lt;&lt;&#然后,您可以将该类用于自定义输出流。同样,当传递ostream的对象时,请确保它们通过引用传递。您可以参考此网站,例如http://www.geeksforgeeks.org/overloading-stream-insertion-operators-c/

答案 2 :(得分:0)

我不需要:

A a; cout<<a; // or a<<cout;

例如,我可以在main中为cout执行此操作:

    ostream& cause(ostream& out)
    {
    out<<"My stream is here";
    return out;
    }

    int main()
    {
    cout<<cause; // Print here 'my stream is here'
return 0;
    }

我只是想为我的班级而不是std :: cout得到这种行为,所以我想在主要写作:

A a; a<<cause; // i want to manipulate stream(?)