如何重置迭代器状态或fstream
在istream_iterator
其他istream_iterator
. 我在 obj 上尝试了seekp(ios_base::begin)
和clear()
方法,fstream
但这没有任何影响。
main(){
fstream ofs{"219.txt"};
fstream ofstl{"219-.txt"};
ofstream rezult{"219-rezult.txt"};
istream_iterator<string> begf{ofs};
istream_iterator<string> begs{ofstl};
istream_iterator<string> end;
ostream_iterator<string> outr{rezult, "\n"};
merge(begf, end, begs, end, outr); // using iterators
ofs.seekp(ios_base::beg); // does not affect
ofs.clear(); // does not affect
while(begf!=end){
cout<<*begf; // work only once
begf++;
}
istream_iterator<string> begff{ofs}; // new iterator
while(begff!=end){
cout<<*begff; // dont work even once
begff++;
}
}
更新:
如果我使用
ofs.clear();
ofs.seekp(ios_base::beg);
然后继续使用相同的istream_iterator
第一个和第二个取消引用给出相同的值,所以需要使用
begf++;
跳过重复项。