おそらく、istream_iterator またはイテレーター全般についての理解が不足していると思われますが、これら 2 つのコード スニペットで同じ結果が得られるのではないでしょうか?
typedef vector<int>::iterator Itv;
vector<int> vec = {1,2,3,4,5,6,7,8,9};
Itv ev = vec.begin();
++ev;
++ev;
++ev;
for (Itv it = vec.begin(); it != ev; ++it){
cout << *it;
}
出力: 123
//data.txt contains: 1,2,3,4,5,6,7,8,9
typedef istream_iterator<char> Itf;
fstream file("data.txt");
Itf ef(file);
++ef;
++ef;
++ef;
for (Itf it(file); it != ef; ++it){
cout << *it;
}
何も出力しません。