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 条评论
登录 后参与评论

相关文章

来自专栏编程

Python原创0基础入门一看几张图就学会了

Python最近势头很猛,由于他在人工智能方面的出色表现,已经成为现在热门的编程语音之一,为了大家方便学习,而不是浪费时间去看入门教程,萌掌用图片的方式画出了你...

1858
来自专栏CDA数据分析师

工具 | 一些实用的 python 小建议

给dict设置默认值 这样能设置所有key的默认值为[],包括新添的key ? setdefault一次只能设置一个值,但好处是能使用链式语法,但default...

1845
来自专栏思考的代码世界

Python编程从入门到实践之继承|第11天

编写类时,并非总是要从空白开始。如果你要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父...

3214
来自专栏韦弦的微信小程序

Swift 3的幂 - LeetCode

为啥是33、、、嗯,自己试试就知道了。。。、、、然后这个执行用时,有时300多,有时200多、、、我也是不知道为什么

622
来自专栏JetpropelledSnake

Python装饰器的高级用法

原文地址 https://www.codementor.io/python/tutorial/advanced-use-python-decorators-cl...

3489
来自专栏Python小屋

Python语言编程规范与优化建议

没有规矩,不成方圆。代码任何一种语言都有一些约定俗成的编码规范,Python也不例外。Python非常重视代码的可读性,对代码布局和排版有更加严格的要求。虽然一...

2454
来自专栏程序员互动联盟

【答疑释惑】遇到多个前置++运算符怎么办?

昨天问题的答案: i += (++i)+(++i)+(++i) 相当于 i = i + (++i)+(++i)+(++i); 前置++操作符,先+1后再相加,最...

2566
来自专栏菜鸟致敬

记一次两小时的js编程学习

1.弱类型语言 2.解释型语言 3.客户端语言 对于有学习Java、C以及Python一类的人来说,最熟悉的莫过于这些都是强类型语言。它们严格的遵守自身的规定,...

552
来自专栏逸鹏说道

Python3 与 NetCore 基础语法对比(就当Python和C#基础的普及吧)

原文:https://www.cnblogs.com/dotnetcrazy/p/9102030.html

1485
来自专栏西枫里博客

PHP7新特性之两个小小语法糖。

想起写下这篇原本是因为群里龙大佬说PHP7下count有问题,顺道就讽了他一句。其实我自己也没有详细了解下PHP7到底在哪些方面做了修改。所以空了就翻了翻手册,...

481

扫描关注云+社区