【C++入門】ストリームクラスの階層構造と入出力の基本を徹底解説
C++におけるストリームとは
C++における「ストリーム」とは、プログラムと入出力(I/O)デバイスの間でやり取りされる文字データの流れを指します。
ストリームクラスは、ファイルや入出力デバイスに対する入出力操作を扱うためのクラス群です。それぞれのクラスが固有の役割を持っており、プログラムの入力・出力を効率的に処理できます。
C++のすべてのストリームクラスは、iostreamライブラリにまとめられています。
まずは、ストリームクラスの階層構造を見てみましょう。

iostreamライブラリの主要クラス
iosクラス
iosクラスは、すべてのストリームクラスの基底クラス(ベースクラス)です。ストリームには入力ストリームと出力ストリームがあり、このクラスにはテンプレートの定義方法に依存しない共通のメンバーが定義されています。
istreamクラス
istreamクラスは、C++における入力ストリームを扱うクラスです。この入力ストリームオブジェクトは、入力データを文字の並び(シーケンス)として読み取り、解釈するために使用されます。標準入力にはcinオブジェクトが対応します。
ostreamクラス
ostreamクラスは、C++における出力ストリームを扱うクラスです。この出力ストリームオブジェクトは、データを文字の並びとして画面などに書き出すために使用されます。標準出力にはcoutやputs関数が対応します。
コード例
出力ストリーム
coutによる出力
#include <iostream>
using namespace std;
int main() {
cout << "この出力は画面に表示されます";
return 0;
}
実行結果
この出力は画面に表示されます
puts関数による出力
#include <iostream>
using namespace std;
int main() {
puts("putsを使った出力結果です");
return 0;
}
実行結果
putsを使った出力結果です
入力ストリーム
cinによる入力
#include <iostream>
using namespace std;
int main() {
int no;
cout << "数値を入力してください: ";
cin >> no;
cout << "cinで入力された数値は " << no << " です";
return 0;
}
実行結果
数値を入力してください: 3453 cinで入力された数値は 3453 です
gets関数による入力
#include <iostream>
using namespace std;
int main() {
char ch[10];
puts("文字列を入力してください");
gets(ch);
puts("getsで入力された文字列は:");
puts(ch);
return 0;
}
実行結果
文字列を入力してください thdgf getsで入力された文字列は: thdgf
まとめ
C++のストリームクラスは、iosクラスを頂点とする階層構造になっており、入力はistream系(cinなど)、出力はostream系(coutなど)が担当しています。
なお、gets関数は入力サイズを制限できず、バッファオーバーフローの危険性があるため、現在では非推奨とされています。実務では、より安全なfgetsやstd::getlineの使用が推奨される点に注意しましょう。
-
C++プログラムの基本構造を徹底解説!Hello Worldで学ぶ入門
C++プログラムの基本構造とは プログラミング言語を効率よく習得する最良の方法は、実際にプログラムを書いてみることです。初心者が最初に書くプログラムとして定番なのが、「Hello World」という文字列を画面に表示するだけのシンプルなプログラムです。ごく簡単な内容ですが、C++プログラムに必要な基本的な構成要素がすべて詰まっています。それでは、さっそくコードを見てみましょう。 #include<iostream> int main() { std::cout << Hello World\n; } ここからは、このプログ
-
C++の標準出力ストリーム(std::cout)とは?基本と使い方を解説
std::coutとは std::coutは、char型などのナロー文字(半角文字)向けの標準出力ストリームを表す、ostreamクラスのオブジェクトです。C言語の標準出力であるstdoutに対応しており、C++における最も基本的な出力手段となります。 標準出力ストリームとは、実行環境によって決定されるデフォルトの文字出力先のことです。この出力先は、エラー出力用のcerrやログ出力用のclogなど、他の標準オブジェクトと共有される場合もあります。 std::coutの特徴 ostreamクラスのオブジェクトであるstd::coutには、主に次の2つの方法で文字を出力できます。 整形済みデー