1. ホーム
  2. C++

C++のostreamの詳細な使用方法

2022-02-09 09:54:20
<パス

概要

C++では、ostreamはoutput streamの略で、"output stream"と呼ばれています。C++で一般的な出力ストリームオブジェクトは標準出力ストリームのcoutで、カスタマイズできることはほとんどなく、coutを直接使用することが多くなっています。

class CPoint
{
public:
    CPoint(int x_,int y_):x(x_),y(y_){}
    int x,y;
};


ここでは単純なクラス CPoint を定義していますが、このクラスをインスタンス化して、オブジェクトの値を表示したい場合。

CPoint point(1,2);
cout << point;


明らかに、このように書くとエラーが報告されます。"<"は、整数や実数型などの通常の型しか出力できないからです。そのエラーは次のようなものです。

そして、その問題を解決するためにostreamが登場しました。

全文表示

C++におけるostream型は、通常クラスのフレンド関数として存在し、<<演算のオーバーローディングで使用されます。上の例を修正して、出力される通常のストリームを正しく動作させる方法を見てみましょう。

class CPoint
{
public:
    CPoint(int x_,int y_):x(x_),y(y_){}

    friend ostream & operator <<(ostream & os,const CPoint & p){
        return os << "x = "<<p.x << " y = "<< p.y << endl;
    }

    int x,y;
};


CPointでは、通常の出力ができるように<<演算子をオーバーロードしています。
OK、ではcout << pointを直接出力すればいいんですね。
この方法は他の多くの場所に拡張でき、特にカスタムタイプの出力にはうまくいきます。同じように書いて、ただ << 演算子をオーバーロードして ostream で使用するだけです。