C++ 基本的な入出力: Cout、Cin、Cerr の例
ストリームとは何か C++?
C++ は、入出力タスクを実行するために使用できる多数のライブラリをユーザーに提供します。これらのタスクは、一般にストリームと呼ばれるバイト シーケンスの形式で実行されます。
ストリームは XNUMX つに分かれています。
ストリームの種類
- 入力ストリーム: これは、バイトがキーボードなどのデバイスからメイン メモリに流れるストリームの一種です。
- 出力ストリーム: これは、バイトが逆方向、つまりメイン メモリからディスプレイ画面などのデバイスに流れるストリームの一種です。
ストリームはどのように機能するのでしょうか?
C++ ストリームは次のように動作します。
- まず、ストリームが正しい型で初期化されます。
- 次に、どこにあるのかを明記する必要があります。 I / O get/put ポインターを使用して発生します。
- ストリーム内の適切な場所に到達したら、それぞれ >> 演算子と << 演算子を使用して入力タスクと出力タスクを実行できます。
機能表
以下は、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; }
出力:
コードのスクリーンショットは次のとおりです。
コードの説明:
- cout オブジェクトが定義されている iostream ヘッダー ファイルをインクルードします。
- std 名前空間を含めると、そのクラスを使用するときにそれを呼び出す必要がなくなります。
- main() 関数を呼び出します。 プログラムコードは本体内に追加する必要があります。 開始中括弧 { は本体の始まりを示します。
- welcome という名前の文字変数を作成し、文字列 Welcome to Guru99 を保持します。
- 文字列 welcome の値をコンソールに出力します。endl は C++ 行の終了を意味するキーワード。カーソルを移動して次の行のテキストの印刷を開始します。
- プログラムは、実行が成功したときに値を返す必要があります。
- 関数 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; }
出力:
コードのスクリーンショットは次のとおりです。
コードの説明:
- iostream ヘッダー ファイルをプログラムにインクルードします。 cin オブジェクトはこのヘッダー ファイルで定義されます。
- そのクラスを使用するには、std 名前空間を含めます。 std のクラスを使用するときに std を呼び出す必要はありません。
- main() 関数を呼び出します。 プログラムコードは本体内に追加する必要があります。
- プログラム本体の始まり。
- 宣言する 整数変数 名前付きの番号。
- ユーザーに番号の入力を求めるメッセージを画面に表示します。
- ユーザーがコンソールにキーボードから入力した値を読み取ります。
- 上で読み取った値を他のテキストと一緒にコンソールに出力します。
- プログラムが正常に実行された場合、プログラムは値を返す必要があります。
- main関数の本体の終わり。
std::cerr
cerrオブジェクトは、エラーを出力するための標準エラーストリームを形成します。 C++. Cerr は ostream クラスのインスタンスです。cerr オブジェクトはバッファリングされません。つまり、エラー メッセージをすぐに表示する必要がある場合に使用されます。
バッファリングされないため、後で表示するためにエラー メッセージは保存されません。ストリーム挿入演算子 (<<) と一緒に使用されます。
例
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
出力:
コードのスクリーンショットは次のとおりです。
コードの説明:
- cerr オブジェクトが定義されている iostream ヘッダー ファイルをインクルードします。
- std 名前空間を含めると、そのクラスを使用するときにそれを呼び出す必要がなくなります。
- main() 関数を呼び出します。 プログラム ロジックは本体内に追加する必要があります。 左中括弧は、関数本体の始まりを示します。
- cerr オブジェクトを使用して、コンソールにエラーを出力します。
- プログラムは、実行が成功すると値を返す必要があります。
- main関数の本体の終わり。
std::詰まり
clog オブジェクトは ostream クラスのインスタンスです。標準ディスプレイであるモニターにエラーを表示するために使用されます。cerr オブジェクトに似ていますが、バッファリングされています。バッファリングされているため、バッファがいっぱいになるかフラッシュされるまで、エラー メッセージをバッファに格納します。ストリーム挿入演算子 (<<) と一緒に使用されます。
例
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
出力:
コードのスクリーンショットは次のとおりです。
コードの説明:
- clog オブジェクトが定義されている iostream ヘッダー ファイルを含みます。
- std 名前空間を含めると、呼び出さずにそのクラスを使用できるようになります。
- main() 関数を呼び出します。 プログラム ロジックは本体内に追加する必要があります。 { は関数本体の始まりを示します。
- clog オブジェクトを使用して、標準出力であるモニターにエラーを出力します。
- プログラムは正常に完了すると値を返す必要があります。
- 関数 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 オブジェクトはバッファリングしません。