у меня есть файл с именем «wy.txt», он имеет некоторые целые числа, как это:о istream_iterator, я не знаю, почему
1 2 3 4 5 6 7 8
Я использую istream_iterator<int>
прочитать файл и использовать copy()
для вывода данные в поток stdout.
тогда я использую тот же istream_iterator<int>
, чтобы построить vector
имени v
, но размер v
является 1, вы знаете, почему?
Это мой код:
ifstream file("wy.txt");
istream_iterator<int> fileStream(file);
istream_iterator<int> eof;
// output: 1 2 3 4 5 6 7 8
copy(fileStream, eof, ostream_iterator<int>(cout, " "));
cout<<endl;
vector<int> v(fileStream, eof);
// output: 1
cout<<v.size()<<endl;
// output: 1
for_each(v.begin(), v.end(), [](const int & t){cout<<t<" ";});
cout<<endl;
Edit:
У меня изменить мой код:
ifstream file("wy.txt");
istream_iterator<int> fileStream(file);
istream_iterator<int> eof;
copy(fileStream, eof, ostream_iterator<int>(cout, " "));
cout<<endl;
file.seekg(0, ios::beg);
file.clear();
vector<int> v(fileStream, eof);
cout<<v.size()<<endl;
for_each(v.begin(), v.end(), [](const int & t){cout<<t<" ";});
... но это та же самая проблема.
Вы очистили состояние EOF в файле, а затем перемотали его назад? –
@ThomasMatthews Я не переустанавливаю состояние потока, можете ли вы рассказать мне, как это сделать? – BlackMamba
Посмотрите 'clear' метод' iostream'. –