C++ 基本入出力:Cout、Cin、Cerr の例
C++ のストリームとは?
C++ は、ユーザーが入出力タスクを実行するために使用できる多数のライブラリーを提供します。これらのタスクは、一般にストリームと呼ばれるバイト シーケンスの形式で実行されます。
ストリームは 2 つに分かれています:
ストリームの種類
- 入力ストリーム: これは、バイトがキーボードなどのデバイスからメイン メモリに流れるタイプのストリームです。
- 出力ストリーム: これは、バイトが逆方向、つまりメイン メモリからディスプレイ画面などのデバイスに流れるタイプのストリームです。
この C++ チュートリアルでは、次のことを学びます:
- C++ のストリームとは?
- ストリームはどのように機能しますか?
- 機能表
- 入出力用の C++ ヘッダー ファイル
- std::cout
- std::cin
- std::cerr
- std::clog
- IO ストリームのエラー処理:
ストリームはどのように機能しますか?
C++ ストリームは次のように機能します:
<オール>機能表
以下は、stream.h ヘッダー ファイルで提供される関数です。
入力/出力用の C++ ヘッダー ファイル
C++ には、基本的な入力/出力タスクを実行するための関数を備えた 3 つのライブラリが用意されています。それらには以下が含まれます:
- イオストリーム: 標準入出力ストリームの頭字語です。このヘッダー ファイルには、cin/cout/cerr などのオブジェクトの定義が含まれています。
- イオマニプ: これは、入出力マニピュレーターの頭字語です。ライブラリには、ストリームの操作に使用できる関数が付属しています。 setw、setprecision などのオブジェクトの定義が含まれています。
- フストリーム: ファイルストリームを記述するヘッダファイルです。ファイルから読み取られたデータを入力として処理するか、ファイルに書き込まれたデータを出力として処理します。
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::cin
cin オブジェクトは istream クラスのインスタンスです。入力デバイスであるキーボードから入力を読み取ります。通常、抽出演算子 (>>) と一緒に使用されます。抽出オブジェクトは、キーボードから入力されたデータを cin オブジェクトから抽出します。
例:
次の例は、C++ で cin キーワードを使用する方法を示しています:
#include <iostream> using namespace std; int main() { int number; cout << "Enter a number:"; cin >> number; cout << "\nYou entered: " << number; return 0; }
出力:
コードのスクリーンショットは次のとおりです:
コードの説明:
<オール>std::cerr
cerr オブジェクトは、C++ でエラーを出力するための標準エラー ストリームを形成します。 Cerr は ostream クラスのインスタンスです。 cerr オブジェクトはバッファリングされません。これは、エラー メッセージをすぐに表示する場合に使用することを意味します。
バッファリングされていないため、後で表示するためのエラー メッセージは保存されません。ストリーム挿入演算子 (<<) と一緒に使用されます。
例:
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
出力:
コードのスクリーンショットは次のとおりです:
コードの説明:
<オール>std::clog
clog オブジェクトは ostream クラスのインスタンスです。標準ディスプレイであるモニターにエラーを表示するために使用されます。 cerr オブジェクトに似ていますが、バッファリングされています。バッファリングされているため、バッファがいっぱいになる/フラッシュされるまでエラーメッセージをバッファに保存します。ストリーム挿入演算子 (<<) と一緒に使用されます。
例:
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
出力:
コードのスクリーンショットは次のとおりです:
コードの説明:
<オール>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 オブジェクトはバッファしません。
C言語