例えば下記オンラインのプログラミング問題では、基本的に標準入力からデータを読み取るために cin を多用します。
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0001&lang=jp
まず最初にこんな感じで回答コードを書くわけですが、
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec;
// 標準入力から値を 10 個読み取る
for(int i = 0; i < 10; ++i)
{
int n;
cin >> n;
vec.push_back(n);
}
// 降順ソート
std::sort(vec.begin(), vec.end(), [](int a, int b) { return a > b; });
// 大きい順に3つ出力
for(int i = 0; i < 3; ++i) { cout << vec[i] << endl; }
return 0;
}
果たしてこれが正しい回答なのか、手元のPCで色々な入力をテストしたいと思うことがたびたびあります。そんなとき、
- 標準入力を毎回手で打つのはしんどいのでファイルから読み取らせたい
- しかし提出するコードをあまり変えたくはない
という2つの要求でてきます。
コードを3行付け足すだけで cin の入力元を指定ファイルに変更できます。
// ...
// 追加1
#include <fstream>
int main()
{
// 追加2, 以降 cin の入力元が 'input.txt' になる
std::ifstream in("input.txt");
std::cin.rdbuf(in.rdbuf());
// ...
}
コードを提出するときには上の3行を削除するだけで OK です。