流迭代器的使用

10.29 编写程序,使用流迭代器读取一个文本文件,存入一个vector中的string里。

#include<iostream>
#include<vector>
#include<fstream>
#include<string>
#include<iterator>
using namespace std;

int main()
{
    ifstream in("1.txt");
    istream_iterator<string> in_iter(in),eof;
    ostream_iterator<string> out_iter(cout," ");
    vector<string> vec;
    while(in_iter!=eof)
        vec.push_back(*in_iter++);
    for(auto v:vec)
        out_iter=v;
    cout<<endl;
    return 0;
}

10.30 使用流迭代器、sort和copy从标准输入读取一个整数序列,将其排序,并将结果写到标准输出。

#include<iostream>
#include<vector>
#include<fstream>
#include<iterator>
#include<algorithm>
using namespace std;

int main()
{
    istream_iterator<int> in_iter(cin),eof;
    ostream_iterator<int> out_iter(cout," ");
    vector<int> vec;
    while(in_iter!=eof)
        vec.push_back(*in_iter++);
    sort(vec.begin(),vec.end());
    copy(vec.begin(),vec.end(),out_iter);
    cout<<endl;
    return 0;
}

10.33 编写程序,接受三个参数:一个输入文件和两个输出文件的文件名。输入文件保存的应该是整数。使用istream_iterator读取文本输入文件。使用ostream_iterator将奇数写入第一个输出文件,每个值之后都跟一个空格。将偶数写入第二个输出文件,每个值都独占一行。

#include<iostream>
#include<vector>
#include<fstream>
#include<iterator>
using namespace std;
int main()
{
    ifstream in("1.txt");
    ofstream out1("2.txt");
    ofstream out2("3.txt");
    istream_iterator<int> in_iter(in),eof;
    ostream_iterator<int> out_iter1(out1," ");
    ostream_iterator<int> out_iter2(out2,"\n");
    vector<int> vec;
    while(in_iter!=eof)
        vec.push_back(*in_iter++);
    for(auto v:vec)
    {
        if(v%2)
          out_iter1=v;
        else
          out_iter2=v;
    }
    cout<<endl;
    return 0;
}

流迭代器的使用,布布扣,bubuko.com

时间: 2024-10-14 11:51:32

流迭代器的使用的相关文章

C++STL:流迭代器

流迭代器是一种迭代器适配器.istream_iterator用于读取输入流,ostream_iterator用于写输出流.这些迭代器将它们所对应的流视为特定类型的元素序列.使用流迭代器时,可以用泛型算法从流对象中读数据或将数据写入到流对象中. 流迭代器的构造函数如下: 流迭代器的基本操作如下: 1.流迭代器的定义. 流迭代器都是类模板:任何已定义输入操作符(>>操作符)的类型都可以定义istream_iterator,任何已定义输出操作符(<<操作符)的类型都可以定义ostream

C++ Primer 学习笔记_54_STL剖析(九):迭代器适配器{(插入迭代器back_insert_iterator)、IO流迭代器(istream_iterator、ostream_i

回顾 适配器 1.三种类型的适配器: (1)容器适配器:用来扩展7种基本容器,利用基本容器扩展形成了栈.队列和优先级队列 (2)迭代器适配器:(反向迭代器.插入迭代器.IO流迭代器) (3)函数适配器:函数适配器能够将仿函数和另一个仿函数(或某个值.或某个一般函数)结合起来. [1]针对成员函数的函数适配器 [2]针对一般函数的函数适配器 一.迭代器适配器 1.反向迭代器 2.插入迭代器 3.IO流迭代器 其中反向迭代器,利用正向迭代器实现可以参考以前<46_STL剖析(三)>. 二.插入迭代

C++ Stream(串流)迭代器

#include <iostream> #include <vector> #include <algorithm> #include <iterator> using namespace std; int main() { ostream_iterator<int> intWriter(cout,"\n"); *intWriter = 42; intWriter++; *intWriter = 77; intWriter++

C++ Primer 阅读笔记:迭代器和容器 小结

原创 by zoe.zhang  0.写在前面的话 我是在2011年学的C++,但是那一年恰好是C++11新标准的一年,但是大学上学的C++还是基于C++98的风格的,使用的编译器也是VC6.0,啊,插一句话,虽然VC6现在看起来有些简陋,而且也不支持C++新标准,但是因为它的轻便,以及有些年代感的编码界面,我自己感觉它就像是一柄钝剑,加上是我接触的第一个编译器,因此对它还是怀有敬意的.当然,现在用的VS2013,编程友好,功能强大,也是非常棒的了.它是支持C++11标准的.C++11相对C++

再探迭代器

插入迭代器 迭代器被绑定到一个容器上,可用来向容器插入元素. back_inserter创建一个使用push_back的迭代器 front_inserter创建一个使用push_front的迭代器 inserter创建一个使用insert的迭代器,此函数接受哦第二个参数,这个参数必须是指向一个给定容器的迭代器.元素将被插入到给定迭代器所表示的元素之前. list<int> lst = {1,2,3,4}; list<int> lst1, lst2; //空list //拷贝完成之后

list反向输出 反向迭代器

反向迭代器(rbegin,rend) c.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素 c.rend() 返回一个逆序迭代器,它指向容器c的第一个元素前面的位置 每一个容器里面都有Iterator(迭代器),可以从容器的begin位置到end位置,通过++来遍历.同样也有个反向迭代器reverse_iterator,从rbegin(=end-1)到rend(=begin-1)反向遍历,仍然通过++.可见能反向迭代的容器,应该是一个双向链表. 回想一下,所有容器都定义了 beg

反向迭代器

C++ primer (中文版第四版)第273页 9.3.2 begin和end成员 begin和end操作产生指向容器内第一个元素和最后一个元素的下一个位置的迭代器,如下所示.这两个迭代器通常用于标记包含容器中所有元素的迭代范围. c.begin() 返回一个迭代器,它指向容器c的第一个元素 c.end() 返回一个迭代器,它指向容器c的最后一个元素的下一个位置 c.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素 c.rend() 返回一个逆序迭代器,它指向容器c的第一个元素

【足迹C++primer】33、再探迭代器

再探迭代器 这里有插入迭代器,有流迭代器,反向迭代器,移动迭代器. 插入迭代器 这是一种迭代器适配器,接受一个容器,生成一个迭代器,实现向给定容器添加元素. 插入迭代器有三种类型,差异在于元素插入的位置 back_inserter创建一个使用push_back的迭代器. front_inserter创建一个使用push_front的迭代器. inserter创建一个使用insert的迭代器. void fun1() { list<int> lst={1,2,3,4}; list<int&

std 迭代器的几种用法

转自 : http://blog.csdn.net/kjing/article/details/6936325 C++ primer (中文版第四版)第273页 9.3.2 begin和end成员 begin和end操作产生指向容器内第一个元素和最后一个元素的下一个位置的迭代器,如下所示.这两个迭代器通常用于标记包含容器中所有元素的迭代范围. c.begin() 返回一个迭代器,它指向容器c的第一个元素 c.end() 返回一个迭代器,它指向容器c的最后一个元素的下一个位置 c.rbegin()