【注意:】
ostream_iterator对象必须与特定的流绑定在一起。在创建istream_iterator时,可直接将它绑定到一个流上。另一种方法是在创建时不提供实参,则该迭代器指向超出末端位置。ostream_iterator不提供超出末端迭代器。
在创建ostream_iterator对象时,可提供第二个(可选的)实参,指定将元素写入输出流时使用的分隔符。分隔符必须是C风格字符串。因为它是C风格字符串,所以必须以空字符结束;否则,其行为将是未定义的。
2、istream_iterator对象上的操作
构造与流绑定在一起的istream_iterator对象时,将对迭代器定位,以便第一次对该迭代器进行解引用时即可从流中读取第一个值。
vector
iVec;
istream_iterator
in_iter(cin); istream_iterator
eof; while (in_iter != eof) { iVec.push_back(*in_iter++); }
while循环从cin中读取 int型数据,并将读入的内容保存在iVec中。每次循环都检查in_iter是否为 eof。其中eof迭代器定义为空的istream_iterator对象,用作结束迭代器。绑在流上的迭代器在遇到文件结束或某个错误时(如输入的是字符),将等于结束迭代器的值。
//可以这样重写该程序
istream_iterator
in_iter(cin);
istream_iterator
eof; vector
iVec(in_iter,eof);
这里,用一对标记元素范围的迭代器构造vector对象。这些迭代器是istream_iterator对象,这就意味着这段范围的元素是通过读取所关联的流来获得的。