• istream_iterator和ostream_iterator


    总结:

    istream_iterator<T>in(strm);T指明此istream_iterator的输入类型,strm为istream_iterator指向的流

     

    提供了输入操作符(>>)和 输出操作符 (<<)的任何类型都可以创建 istream_iterator 对象和ostream_iteratorcfq对象,即对自己的类重载了这两个函数,

    ostream_iterator中,template如果是一个类名称的时候,那么这个类必须实现重载”<<”输出运算符号,用于数据的输出。

    istream &operator >> (istream &is, &MyClass c);

    和 ostream &operator << (ostream &os , const  &MyClass c); //因为c是输出内容,不需要更改,所以是const

     

    istream_iterator<T>eoff //eoff这个名字随意取,当后面为空时,eoff相当于指向EOF标志的iterator

    istream_iterator 和 ostream_iterator 都没有定义自减运算,即 --input; 是错误的

    只需要整型时,istream_iterator<int>input(file);如果文件中含有字母,同样会提前终结,相当于eof或者ctrl+z

     

    istream_iterator通常和copy()函数一起使用,往vector中输入值时,可以采用如下方式:

    vector<int>ivec;

    copy(ivec.begin(),ivec.end(),back_inserter(ivec));

    查看ivec中的值,不用for循环,同样直接输出

    copy(ivec.begin(),ivec.end(),ostream_iterator<int>(os," "));

     

    ostream_iterator属于I/O流STL适配器,用于获取一个元素,同时保存在缓冲器中,可以供Cout输出。如果把cout看做成一个对 象,那么在Cout对象当中存在一片用于数据存储的区域。ostream_iterator在STL中一般配合copy函数一起使用,如下代码;

       ostream_iterator output(cout, " "); //关联cout,设置分隔符
        copy(ivec.begin(), ivec.end(), output); //元素拷贝到ostream_iterator所指向的对象cout
        cout; //显示cout的值

    ostream_iterator<int>(cout," ");//表示输出到屏幕 

    实质是一个指向输出流的指针,所以 ostream_iterator<int>output(cout," "); *output=40;//指针解引后,屏幕显示输出值40

    C++程序把输入和输出看作字节流:输入时,程序从输入流中抽取字节;输出是,程序将字节插入到输出流中。流充当了程序和流源或流目标之间的桥梁。

    缓冲区是用作中介的内存块,它将信息从设备传输到程序或从程序传输给设备的临时存储工具。

    引自https://blog.csdn.net/fdl19881/article/details/6685744

  • 相关阅读:
    [BFS][51nod]1649 齐头并进
    [最短路] [洛谷] P1629 邮递员送信
    [HDUOJ] 1233 还是畅通工程
    [HDUOJ] 1873 看病要排队
    [树直径] [POJ] CowMarathon
    [暴搜] 树直径
    [模板] 最小生成树
    [洛谷] P1276 校门外的树(增强版)
    1140 Look-and-say Sequence (20 分)
    string与char数组互相转换(一)
  • 原文地址:https://www.cnblogs.com/ymd12103410/p/9516468.html
Copyright © 2020-2023  润新知