- istream : オブジェクトは cin
- ostream : オブジェクトは cout, cerr(エラー出力。バッファリングしない), clog(ログ出力。バッファリングする)
- iostream : istream と ostream の派生クラス (多重継承)
- fstream : iostream の派生クラス
- stringstream : iostream の派生クラス
という継承関係があり、アップキャストを考える場合などに有用な知識です。また、ファイルストリームでの知識が、以下のように cin でも利用できます。
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
int n;
while(true) {
cin >> n;
// エラーでない場合
if(! cin.fail()) {
break;
}
// ファイル終端によるエラーの場合
if (cin.eof()) { // cin でファイル終端とは Ctrl-D などのこと。
exit(EXIT_FAILURE);
}
// その他のエラー (int型でない入力)
char ch;
cin.clear(); // ロック解除
cin >> ch; // 読み捨てる
}
cout << "INPUT: " << n << endl;
return 0;
}
0
筋トレ始めました。バックエンドエンジニアです。
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。



