专栏首页转载gongluck的CSDN博客C++:istreambuf_iterator与istream_iterator的区别

C++:istreambuf_iterator与istream_iterator的区别

在C++中,流(stream)也可以看做是容器,因而也有相应的iterator来遍历流中的内容,其中就有本文要介绍的两个流迭代器:istreambuf_iterator和istream_iterator,这两个迭代器的用法和区别可以用一下两段代码来体现:

例1:istreambuf_iterator

#include <fstream> 
#include <iostream> 
#include <iterator> 
using namespace std;  
 
int main(){  
 
    ifstream in("test.cpp");  
    istreambuf_iterator<char> isb(in),end;  
    ostreambuf_iterator<char> osb(cout);  
 while(isb!=end)  
        *osb++ = *isb++;  
    cout<<endl;  
 return 0;  
}  

这段代码的意思是把test.cpp中的内容读出来并打印到终端上,输出的结果原分不动地保留了test.cpp的格式,下面我们来看另外一个例子:

例2:

#include <fstream> 
#include <iostream> 
#include <iterator> 
using namespace std;  
 
int main(){  
 
    ifstream in("test.cpp");  
    istream_iterator<char> isb(in),end;  
    ostream_iterator<char> osb(cout);  
 while(isb!=end)  
        *osb++ = *isb++;  
    cout<<endl;  
 return 0;  
}  

这段代码的输出舍弃了test.cpp中的所有空白!所以打印在终端上一堆字符。区分这两个iterator也很简单,只要记住带“buf”的更接近底层,所以原分不动地把所有字符都读了进来。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用librtmp推流/拉流

    准备工作 #include "librtmp/rtmp_sys.h" #include "librtmp/log.h" #pragma comment(lib...

    _gongluck
  • ffmpeg的时基

    FFMPEG的很多结构中有AVRational time_base;这样的一个成员,它是AVRational结构的 typedef struct AVRatio...

    _gongluck
  • cocos2dx 2048

    #include "GameScene.h" #include "CardSprite.h" #include "ScoreBoard.h" #include ...

    _gongluck
  • 海尔COSMOPlat: 世界智能制造的新坐标

    纵观历史,占据价值链的核心环节,就意味着掌控了全球价值方向。制造业智能化,提升生产智能化水平是全球工业化的大势所趋,也是重塑国家间产业竞争力的关键因素。智能制造...

    曾响铃
  • 海尔COSMOPlat布局中国工业体系的社会化

    毫无疑问,智能化是制造自动化的发展方向,但总体而言智能制造尚处于概念和实验阶段。在各国政府均将此列入国家发展计划,并大力推动实施后,各国才开始有了自己的方向,比...

    曾响铃
  • 智能硬件抄来抄去没意思,想想如何创新吧

    这几天有款名为VINCI智能头机的智能硬件刷爆了我的朋友圈,看名字我以为这是一款与VR(虚拟现实)类设备,点进去才知道其实是一款特别的耳机,听歌是主要功能,但实...

    罗超频道
  • 解析 | 大数据驱动智能制造,实现制造强国之梦(下)

    导读:推动智能制造的并不是大数据本身,而是大数据的分析技术。大数据给了我们一个看世界的新角度,成为驱动创新的核心动力来源。我们要从设备智能管理、工业大数据入手分...

    钱塘数据
  • Kotlin学习笔记(七)-泛型

    这节我们说下Kotlin的泛型。首先默认大家对Java泛型有个基本的认识,如果 不熟悉Java的泛型,可以阅读文章,或是看下Java《Java核心技术卷一基础知...

    g小志
  • 研究学习Kotlin的一些方法

    Kotlin是一门让人感到很舒服的语言,相比Java来说,它更加简洁,省去了琐琐碎碎的语法工作,同时了提供了类似Lambda,String template,N...

    技术小黑屋
  • 什么是工业4.0 时代背景下工厂升级趋势?

    导读:工业4.0的关键自然是智能工厂。当然,这当中的难点非常之多,需要大量的跨专业的技术整合。将来的人才也需要更高的要求。 全文较长,建议阅读时间4分钟。 往...

    钱塘数据

扫码关注云+社区

领取腾讯云代金券