話戻すようでわるいんだけど。

ifstream is( from.c_str() );
istream_iterator<string> ii( is );
istream_iterator<string> eos;
int i = static_cast<int>(distance( ii, eos ));
vector<string> b( i );
copy( ii, eos, b.begin() );

なんかうまくcopyされてないみたい。。。
この ii の値はdistanceの後変わってしまう?
あとeosってここではどんな意味が?