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

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

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

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

ストリームの種類

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

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

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

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

機能表

次のことwing stream.h ヘッダー ファイルで提供される関数は次のとおりです。

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

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

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

  • イオストリーム: これは、標準入出力ストリームの頭字語です。 このヘッダー ファイルには、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 オブジェクトから抽出する役割を果たします。

次のことwing この例は、 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 オブジェクトは unbuffer編これは、エラー メッセージをすぐに表示する場合に使用されることを意味します。

アンだからbuffered、エラーメッセージは保存されません later 画面。ストリーム挿入演算子 (<<) と一緒に使用されます。

#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 オブジェクトに似ていますが、 buffer編それ以来 buffered、エラーメッセージを保存します buffer まで buffer 充填/フラッシュされます。ストリーム挿入演算子 (<<) と一緒に使用されます。

#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;
}

もっとデを得るにはtails ストリームのステータスについては、次の関数を使用できます。

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

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

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

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

まとめ

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