可以将一个`istream_iterator'定义为单个文件吗?

时间:2010-11-20 21:44:58

标签: c++ stl istream-iterator

ifstream file1;
file1.open("in1.txt");
istream_iterator<string> iterator1(file1);
copy(istream_iterator<string>(file1), istream_iterator<string>(), back_inserter(lstr));

我们可以有两个指向单个文件的输入流迭代器吗?与上面的情况一样,迭代器正在升级(只有一次引用,因为它应该是)并且副本中缺少第一个元素(字符串)。有可能吗?

2 个答案:

答案 0 :(得分:2)

你可以,但是如果你前进一个,文件指针会随之前进,所以它会影响另一个的下一个前进。此外,迭代器在创建时会提前一次,因此在需要之前不要创建它。

答案 1 :(得分:1)

标准规定24.1.1,作为要求规则后面的注释。因为每个人都希望听到Standardese,所以我引用它

  

[注意:对于输入迭代器,a == b并不意味着++ a == ++ b。 (Equality不保证替换属性或引用透明性。)输入迭代器上的算法绝不应该尝试两次通过相同的迭代器。它们应该是单通道算法。