1-19. 基本入出力

公開日: 0:24 1. 基本編/1-19. 基本入出力


C++標準ライブラリが備えている入出力機能の拡張セットについて述べていきます。このページではC++プログラミングで求められる最も基本的、一般的な入出力命令を見ていきます。
C++の入出力はバイトの並びであるストリームで起こります。キーボード、ディスクドライブ、ネットワーク接続などのようなデバイスからバイトがメインメモリへ流れると入力命令と呼び、バイトがメインメモリからスクリーン、プリンタ、ディスクドライブ、ネットワーク接続などに流れると出力命令と呼びます。

入出力ヘッダライブラリ

C++プログラムには次のような重要なヘッダライブラリがあります。
ファイル説明
<iostream>このファイルはcincoutcerrclogオブジェクトを定義しており、それぞれ標準入力ストリーム、標準出力ストリーム、標準エラーストリーム(un-bufferd)、標準エラーストリーム(buffered)に対応しています
<iomanip>このファイルはsetwsetprecisionのようないわゆるパラメータ化ストリーム操作群、フォーマット化された入出力の実行に有用なサービスを宣言します。
<fstream>このファイルはユーザ管理のファイル処理のためのサービスを宣言します。

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

事前定義されたcoutオブジェクトはostreamクラスの実体、インスタンスです。cout オブジェクトは標準出力デバイスに"紐付けられた"と表現され、通常はディスプレイ画面 です。coutは2つの小なり記号(<)で表されるストリーム挿入演算子と組み合わせて使われ、次のようになります。
#include <iostream>
 
using namespace std;
 
int main( )
{
   char str[] = "Hello C++";
 
   cout << "strの値: " << str << endl;
}
上のコードをコンパイルし実行すると、次のような結果が得られます。
strの値 : Hello C++

C++コンパイラは出力する変数のデータ型を決定し、値を表示するための適切なストリーム挿入演算子を選択します。<<演算子は組み込まれた整数、浮動小数、実数、文字列、ポインタ型のデータを出力するためにオーバーロードされます。
挿入演算子<<は上の例のように一つの構文で1回以上使われることがあり、endlは行末に改行を加えるのに使われます。

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

事前定義されたcinistreamクラスのインスタンス、実体です。cinオブジェクトは標準入力デバイスにアタッチ(attache、取り付け)され、一般的にはキーボードです。cinは次の例のように2つの大なり記号(>)で表記されるストリーム抽出演算子と一緒に使われます。
#include <iostream>
 
using namespace std;
 
int main()
{
   char name[50];
 
   cout << "名前を入力してください: ";
   cin >> name;
   cout << "あなたの名前は: " << name << endl;
 
}
上のコードをコンパイルし実行すると、名前を入力するよう応答します。名前を打ち込んだあとにエンターキーを押すと次のような結果が確認できます。
名前を入力してください: cplusplus
あなたの名前は: cplusplus

C++コンパイラは入力した値のデータ型を決定し、値を抽出するための適切な抽出演算子を選択し、与えられた変数に格納します。 抽出演算子>>は一つの構文に1回以上使われることがあります。1つ以上のデータを要求するには次のようになります。
cin >> name >> age;
これは次の2つの構文と同じ意味になります。
cin >> name;
cin >> age;

標準エラー出力(cerr)

事前定義されたcerrオブジェクトはostreamクラスのインスタンス、実体です。cerrオブジェクトはデイスプレイ画面などの標準エラーデバイスにアタッチ(attach、取り付け)されますが、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)

事前定義されたclogオブジェクトはostreamクラスのインスタンス、実体です。clogオブジェクトはディスプレイ画面などの標準エラーデバイスにアタッチ(attach、取り付け)されますが、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を使うようにすると良いトレーニングとなります。
  • ?±??G???g???[?d????u?b?N?}?[?N???A

0 件のコメント :

コメントを投稿