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 で使用するだけです。
関連
-
undefinederror: 'dynamic_cast' の前に unqualified-id を指定する必要があります。
-
std::logic_error' のインスタンスを投げた後に呼び出された実行エラー終了 what(): basic_string::_S_const
-
C++:ソースファイルを開くことができない問題
-
エラー: 'xxx' は事前宣言と C++ ヘッダーファイルが互いに含まれているため、型名になりません。
-
vs2015 はソースファイル stdio.h を見つけることができない 解決策
-
c++11の機能を含むcmakeの書き方 (-std=c++11 cmakeList.txtに書き込む方法)
-
C++のコンパイルエラーで修飾子が破棄される [-fpermissive] 。
-
C++: エラー C2228: '.str' の左側にはクラス/構造体/結合が必要
-
警告: この関数では 'p' が初期化されていない状態で使用されることがあります。
-
C++によるhttpサーバー/webサーバーの作成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
C++11での移動セマンティクス(std::move)と完全な前進(std::forward)。
-
C++コンパイルエラー:||error: ld returned 1 exit status|.
-
C++がpythonを呼び出す
-
C++ 文字列における c_str(), data(), copy(p,n) 関数の使用法
-
致命的なエラー LNK1169: 1つ以上の多重定義されたシンボルが見つかりました 解決策
-
C++ [エラー] 'std::string {aka std::basic_string<char>}' を 'char*' に変換できないエラー
-
C++共通ライブラリ関数一覧
-
文字列がこのスコープで宣言されていない 問題の解決
-
c/c++の "undefined reference to "の解決法
-
c++ベクトル使用集