C++ 基本的な入出力: Cout、Cin、Cerr の例

ストリームとは何か C++?

C++ は、入出力タスクを実行するために使用できる多数のライブラリをユーザーに提供します。これらのタスクは、一般にストリームと呼ばれるバイト シーケンスの形式で実行されます。

ストリームは XNUMX つに分かれています。

ストリームの種類

  • 入力ストリーム: これは、バイトがキーボードなどのデバイスからメイン メモリに流れるストリームの一種です。
  • 出力ストリーム: これは、バイトが逆方向、つまりメイン メモリからディスプレイ画面などのデバイスに流れるストリームの一種です。

ストリームはどのように機能するのでしょうか?

C++ ストリームは次のように動作します。

  1. まず、ストリームが正しい型で初期化されます。
  2. 次に、どこにあるのかを明記する必要があります。 I / O get/put ポインターを使用して発生します。
  3. ストリーム内の適切な場所に到達したら、それぞれ >> 演算子と << 演算子を使用して入力タスクと出力タスクを実行できます。

機能表

以下は、stream.h ヘッダー ファイルで提供される関数です。

CLASS 機能
ファイルバフ ファイルバッファを読み取り/書き込み用に設定します。close() および open() 関数があります。
fストリームベース これは、ifstream、fstream、ofstream クラスの基本クラスです。その操作はファイル ストリームに共通です。
イフストリーム これは入力操作を提供するための入力ファイル ストリーム クラスです。
のストリーム これは出力操作を提供するための出力ファイル ストリーム クラスです。
ストリーム これは入出力ストリーム クラスです。同時入出力操作をサポートします。

C++ 入力/出力用のヘッダーファイル

C++ 基本的な入出力タスクを実行するための関数を備えた 3 つのライブラリを提供します。これらには次のものが含まれます。

  • イオストリーム: これは、標準入出力ストリームの頭字語です。 このヘッダー ファイルには、cin/cout/cerr などのオブジェクトの定義が含まれています。
  • イオマニプ: これは、Input/Output Manipulator の頭字語です。 ライブラリには、ストリームの操作に使用できる関数が付属しています。 これには、setw、setprecision などのオブジェクトの定義が含まれています。
  • Fストリーム: ファイルストリームを記述するためのヘッダファイルです。 ファイルから読み取られるデータを入力として処理するか、ファイルに書き込まれるデータを出力として処理します。

cinとcoutのキーワードは、 C++これらはそれぞれ入力の取得と出力の印刷に使用されます。これらを使用するには、プログラムにiostreamヘッダーファイルを含める必要があります。その理由は、これらがそのヘッダーファイルで定義されているためです。iostreamヘッダーファイルをインクルードしないとエラーが発生します。これは、 C++ コンパイラがキーワードの意味を理解する必要があります。

iostream ヘッダー ファイルで定義されている主なオブジェクトは、cin、cout、cerr、および clog です。 それらについて話し合いましょう。

std :: cout

cout オブジェクトは、iostream クラスのインスタンスです。これは、標準出力デバイス (通常は画面) に出力を生成するために使用されます。ストリーム挿入演算子 (<<) と一緒に使用されます。

#include <iostream>
using namespace std;
int main() {

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

出力:

std :: cout

コードのスクリーンショットは次のとおりです。

std :: cout

コードの説明:

  1. cout オブジェクトが定義されている iostream ヘッダー ファイルをインクルードします。
  2. std 名前空間を含めると、そのクラスを使用するときにそれを呼び出す必要がなくなります。
  3. main() 関数を呼び出します。 プログラムコードは本体内に追加する必要があります。 開始中括弧 { は本体の始まりを示します。
  4. welcome という名前の文字変数を作成し、文字列 Welcome to Guru99 を保持します。
  5. 文字列 welcome の値をコンソールに出力します。endl は C++ 行の終了を意味するキーワード。カーソルを移動して次の行のテキストの印刷を開始します。
  6. プログラムは、実行が成功したときに値を返す必要があります。
  7. 関数 main() の本体の終わり。

std::cin

cin オブジェクトは istream クラスのインスタンスです。入力デバイスであるキーボードから入力を読み取ります。通常は抽出演算子 (>>) と一緒に使用されます。抽出オブジェクトは、cin オブジェクトからキーボードから入力されたデータを抽出する役割を担います。

次の例は、cinキーワードの使用方法を示しています。 C++:

#include <iostream>
using namespace std;
int main()
{
	int number;

	cout << "Enter a number:";
	cin >> number;
	cout << "\nYou entered: " << number;

	return 0;
}

出力:

std::cin

コードのスクリーンショットは次のとおりです。

std::cin

コードの説明:

  1. iostream ヘッダー ファイルをプログラムにインクルードします。 cin オブジェクトはこのヘッダー ファイルで定義されます。
  2. そのクラスを使用するには、std 名前空間を含めます。 std のクラスを使用するときに std を呼び出す必要はありません。
  3. main() 関数を呼び出します。 プログラムコードは本体内に追加する必要があります。
  4. プログラム本体の始まり。
  5. 宣言する 整数変数 名前付きの番号。
  6. ユーザーに番号の入力を求めるメッセージを画面に表示します。
  7. ユーザーがコンソールにキーボードから入力した値を読み取ります。
  8. 上で読み取った値を他のテキストと一緒にコンソールに出力します。
  9. プログラムが正常に実行された場合、プログラムは値を返す必要があります。
  10. main関数の本体の終わり。

std::cerr

cerrオブジェクトは、エラーを出力するための標準エラーストリームを形成します。 C++. Cerr は ostream クラスのインスタンスです。cerr オブジェクトはバッファリングされません。つまり、エラー メッセージをすぐに表示する必要がある場合に使用されます。

バッファリングされないため、後で表示するためにエラー メッセージは保存されません。ストリーム挿入演算子 (<<) と一緒に使用されます。

#include <iostream>
using namespace std;
int main() {

	cerr << "An Error occurred!";

	return 0;
}

出力:

std::cerr

コードのスクリーンショットは次のとおりです。

std::cerr

コードの説明:

  1. cerr オブジェクトが定義されている iostream ヘッダー ファイルをインクルードします。
  2. std 名前空間を含めると、そのクラスを使用するときにそれを呼び出す必要がなくなります。
  3. main() 関数を呼び出します。 プログラム ロジックは本体内に追加する必要があります。 左中括弧は、関数本体の始まりを示します。
  4. cerr オブジェクトを使用して、コンソールにエラーを出力します。
  5. プログラムは、実行が成功すると値を返す必要があります。
  6. main関数の本体の終わり。

std::詰まり

clog オブジェクトは ostream クラスのインスタンスです。標準ディスプレイであるモニターにエラーを表示するために使用されます。cerr オブジェクトに似ていますが、バッファリングされています。バッファリングされているため、バッファがいっぱいになるかフラッシュされるまで、エラー メッセージをバッファに格納します。ストリーム挿入演算子 (<<) と一緒に使用されます。

#include <iostream>
using namespace std;
int main() {
	clog << "An Error occurred!";
	return 0;
}

出力:

std::詰まり

コードのスクリーンショットは次のとおりです。

std::詰まり

コードの説明:

  1. clog オブジェクトが定義されている iostream ヘッダー ファイルを含みます。
  2. std 名前空間を含めると、呼び出さずにそのクラスを使用できるようになります。
  3. main() 関数を呼び出します。 プログラム ロジックは本体内に追加する必要があります。 { は関数本体の始まりを示します。
  4. clog オブジェクトを使用して、標準出力であるモニターにエラーを出力します。
  5. プログラムは正常に完了すると値を返す必要があります。
  6. 関数 main() の本体の終わり。

IOストリームによるエラー処理

ストリームが有効かどうかを確認するには、ストリームをブール値として使用できます。

ifstream file( "myfile.txt" );
if ( ! file )
{
        cout << "File NOT opened!" << endl;
}

ストリームのステータスの詳細を取得するには、次の関数を使用できます。

  • Good() - すべてが問題なければ true を返します。
  • bad() - 致命的なエラーが発生した場合は true を返します。
  • fail() - ストリーム操作が失敗した後に true を返します。
  • eof() - ファイルの終わりに達すると true を返します。

特定の読み取り/書き込み操作が失敗したかどうかを確認するには、読み取り結果をテストします。

たとえば、ユーザーが有効な整数を入力したかどうかを確認するには、次のようにします。

int p;
if ( cin >> p ) 
{
        cout << "Enter valid number" << endl;
}

まとめ

  • 入力タスクと出力タスク C++ バイトシーケンスを介して行われます。バイトはストリームと呼ばれます。
  • 入力ストリームでは、バイトはキーボードなどの入力デバイスからメイン メモリに流れます。
  • 出力ストリームでは、バイトがメイン メモリからモニタなどの出力デバイスに送信されます。
  • cin オブジェクトは、istream クラスのインスタンスです。 キーボードなどの入力デバイスからの入力を読み取ります。
  • cout オブジェクトは、ostream クラスのインスタンスです。 モニターなどの出力デバイスに出力を生成します。
  • cerr オブジェクトは、ostream クラスのインスタンスです。 エラーオブジェクトをモニターに表示します。
  • clog オブジェクトは、ostream クラスのインスタンスです。 出力デバイスにエラー メッセージを表示します。
  • clog オブジェクトはエラー メッセージをバッファリングしますが、cerr オブジェクトはバッファリングしません。