C++ での Iostream の定義
 
このガイドでは、C++ で基本的な入出力ライブラリを利用する方法について説明します。
<iostream> ヘッダーを利用して、グローバルストリームオブジェクトを C++ に含める
    
入出力ライブラリは、ほとんどすべての実際のプログラムで使用される C++ STL のコア部分です。C++ I / O 操作は、ストリームの形式で抽象化されます。これは、一般的なデータシーケンスと考えることができます。ストリームの抽象化は、多重継承されたクラスを使用して実装され、特定の I / O 操作に特化した異なる名前のオブジェクトとしてユーザーに公開されます。ストリームベースの I / O ライブラリ全体を使用して、テキストをコンソールに出力したり、ディスク上のファイルからデータを読み書きしたりできることに注意してください。ストリームライブラリは、C++ プログラムがファイルシステムやデバイスと対話するための主要な手段と考えることができます。
2つの重要なストリームクラスは、データの読み取りと書き込みに使用されるストリームに対応する istream と ostream です。これらのクラスは、文字ストリームに対する操作を提供します。プログラムがユーザー入力の取得やエラーメッセージの出力などの操作を実行するために頻繁に使用する 4つのグローバルストリームオブジェクトがあります。これらのオブジェクトは次のとおりです。
- cout:C の- stdoutに対応する標準出力ストリームを表します。
- cin:これは標準入力ストリームです(- stdinに対応します)。
- cerr:これは、バッファなしストリームとして実装された標準エラーストリームです(- stderrに対応します)。
- clog:C に相当するものがない標準のロギングストリームであり、- cerrのバッファバージョンを提供します。
I / O ストリームライブラリのもう 1つの重要な部分は、異なるオブジェクト間で操作をチェーンするために使用される演算子です。ストリーム挿入演算子と呼ばれる << 演算子は、データをストリームオブジェクトにプッシュします。一方、>> 演算子はストリームエクストラクタとして知られています。これらの演算子は通常、算術型に対してシフト演算を実行しますが、この場合はオーバーロードされた演算子として実装されることに注意してください。
次の例では、C++ ストリームベースの I / O クラスの基本的な使用法を示します。cout オブジェクトを使用して、string の内容をコンソールに出力します。cout は標準出力ストリームに対応しているため、挿入演算子を使用してデータをプッシュし、通常はコンソールに出力されます。endl オブジェクトは、改行文字を出力して出力バッファをフラッシュするマニピュレータと呼ばれることに注意してください。
ストリームマニピュレータにはさまざまなタイプがあり、endl のように入出力を変更するものと、ストリームオブジェクトに入出力を異なる方法で解釈させるものがあります。後者には、dec、hex、oct などの基数マニピュレータが含まれます。
#include <iostream>
#include <string>
using std::cerr;
using std::cout;
using std::endl;
using std::string;
int main() {
  string str1("what does iostream mean?");
  cout << str1 << endl;
  cout << str1 << " - " << str1 << endl;
  return EXIT_SUCCESS;
}
出力:
what does iostream mean?
what does iostream mean? - what does iostream mean?
前のプログラムで示したように、ストリーム演算子とオブジェクトの最も強力な機能は、複数回連続してチェーンされることです。この場合、リテラル値を他の変数と組み合わせて、それらすべてを cout ストリームにプッシュできることがわかります。次に、cin オブジェクトと cerr オブジェクトを使用して、ユーザー入力を読み取り、読み取ったデータを出力します。
読み取る必要のある型のオブジェクトは、浮動小数点数 x として事前に宣言する必要があることに注意してください。挿入/抽出演算子のもう 1つの便利なプロパティは、操作が失敗した場合にゼロ以外の値を返すことです。または、メンバー関数 fail および bad を使用して、特定のストリームオブジェクトで特定のエラーが発生したかどうかを確認できます。
#include <iostream>
#include <string>
using std::cerr;
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
  float x;
  cout << "enter float: ";
  if (!(cin >> x)) {
    cerr << "error while reading the floating point value!" << endl;
    return EXIT_FAILURE;
  }
  cout << x;
  return EXIT_SUCCESS;
}
出力:
error while reading the floating point value!
