C++ の基本的な入出力


C++ 標準ライブラリには豊富な入出力関数セットが用意されており、これについては後続の章で紹介します。この章では、C++ プログラミングにおける最も基本的で一般的な I/O 操作について説明します。

C++ の I/O は、バイトのシーケンスであるストリームで発生します。バイトのストリームがデバイス (キーボード、ディスク ドライブ、ネットワーク接続など) からメモリに流れる場合、これは 入力操作 と呼ばれます。バイトのストリームがメモリからデバイス (ディスプレイ、プリンター、ディスク ドライブ、ネットワーク接続など) に流れる場合、これは 出力操作 と呼ばれます。

I/O ライブラリ ヘッダー ファイル

次のヘッダー ファイルは、C++ プログラミングにおいて非常に重要です。

このファイルは、いわゆるパラメーター化されたストリームマニピュレーター (setwsetprecision このファイルは、ユーザー制御のファイル処理ステートメントを提供します。この詳細については、ファイルとストリームに関する関連する章で説明します。
ヘッダーファイル機能と説明
<iostream>このファイルは、標準入力ストリーム、標準出力ストリーム、バッファなしの標準エラー ストリームとバッファありの標準エラー ストリーム。 <iomanip>
など) を介して標準化された I/O を実行するのに役立つサービスを宣言します。 <fstream>

標準出力ストリーム (cout)

事前定義オブジェクト cout は、ostream クラスのインスタンスです。 cout オブジェクトは、標準出力デバイス (通常は表示画面) に「接続」します。 cout は、以下に示すように、ストリーム挿入演算子 << と組み合わせて使用​​されます。

#include <iostream>
 
using namespace std;
 
int main( )
{
   char str[] = "Hello C++";
 
   cout << "Value of str is : " << str << endl;
}

上記のコードがコンパイルされて実行されると、次の結果が生成されます。

Value of str is : Hello C++

C++ コンパイラーは、必要に応じて変数を出力します。データ型に応じて、値を表示する適切なストリーム挿入演算子を選択します。 << 演算子は、組み込み型 (整数、浮動小数点、倍精度浮動小数点、文字列、およびポインター) のデータ項目を出力するためにオーバーロードされます。

ストリーム挿入演算子 << は、上の例に示すように、ステートメント内で複数回使用できます。endl は、行の末尾に改行文字を追加するために使用されます。

標準入力ストリーム (cin)

事前定義オブジェクト cin は、istream クラスのインスタンスです。 cin オブジェクトは、標準の入力デバイス (通常はキーボード) に接続されます。 cin は、以下に示すように、ストリーム抽出演算子 >> と組み合わせて使用​​されます。

#include <iostream>
 
using namespace std;
 
int main( )
{
   char name[50];
 
   cout << "请输入您的名称: ";
   cin >> name;
   cout << "您的名称是: " << name << endl;
 
}

上記のコードがコンパイルされて実行されると、ユーザーに名前の入力を求められます。ユーザーが値を入力して Enter キーを押すと、次の結果が表示されます:

请输入您的名称: cplusplus
您的名称是: cplusplus

C++ コンパイラーは、入力値のデータ型に基づいて値を抽出するための適切なストリーム抽出演算子を選択し、それを保存します特定の変数で指定されたもので。

ストリーム抽出演算子>> 複数のデータ入力が必要な場合は、次のステートメントを使用できます:

cin >> name >> age;

これは、次の 2 つのステートメントと同等です:

cin >> name;
cin >> age;

標準エラー ストリーム ( cerr )

事前定義オブジェクト cerr は、 ostream クラスのインスタンスです。 cerr オブジェクトは標準エラー デバイス (通常はディスプレイ) に接続されますが、cerr オブジェクトはバッファリングされておらず、cerr に挿入されたすべてのストリームはすぐに出力されます。

cerr は、以下に示すように、ストリーム挿入演算子 << と組み合わせて使用​​することもできます。

#include <iostream>
 
using namespace std;
 
int main( )
{
   char str[] = "Unable to read....";
 
   cerr << "Error message : " << str << endl;
}

上記のコードがコンパイルされて実行されると、次の結果が生成されます:

Error message : Unable to read....

標準ログ ストリーム (clog )

事前定義オブジェクト clogostream クラスのインスタンスです。 clog オブジェクトは標準エラー デバイス (通常は表示画面でもあります) に接続されますが、clog オブジェクトはバッファリングされます。これは、clog に挿入された各ストリームは最初にバッファに格納され、バッファがいっぱいになるかフラッシュされるまで出力されないことを意味します。

clog は、以下に示すように、ストリーム挿入演算子 << と組み合わせて使用​​することもできます。

#include <iostream>
 
using namespace std;
 
int main( )
{
   char str[] = "Unable to read....";
 
   clog << "Error message : " << str << endl;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます。

Error message : Unable to read....

これらの小さな例では、cout、cerr、clog の違いはわかりませんが、大きなプログラムを作成して実行すると、それらの違いは非常に明白になります。したがって、適切なプログラミングの実践では、cerr ストリームを使用してエラー メッセージを表示し、他のログ メッセージを出力するには clog ストリームを使用する必要があります。