使用插入符和提取符时,一般程序员不知道或不必关心数据在哪里产生和消亡,不管处理的对象是标准I/O、文件、内存还是新创建的类或设备。
然而,重要的是与产生和消耗数据的输入输出流部分进行通信为这部分提供统一的接口并隐藏底层实现,标准库把他抽象成一个类,成为streambuf.

每一个输入输出流都包含一个指针,指向某种streambuf(这依赖于它是否处理标准I / O、文件、内存等等) 。我们可以直接访问streambuf。例如,可以向s t r e a m b u f移进、移出原始字节,而不必通过输入输出流来格式化

它们。当然,这是通过调用s t r e a m b u f对象的成员函数来完成的。
 
    为了允许我们访问s t r e a m b u f,每个流对象有一个叫做 r d b u f ( )的成员函数,这个函数返回指向对象的s t r e a m b u f的指针。这样,我们可以为下层的 s t r e a m b u f调用任何成员函数。然而,对s t r e a m b u f指针所做的最有兴趣的事之一是:使用“< <”操作符将其与另一个输入输出流联结。这使我们的对象中的所有字节流进“< <”左边的对象中。这意味着,如果把一个输入输出流的
所有字节移到另一个输入输出流,我们不必做读入它们的一个字节或一行这样单调的工作。
 
下面是打开一个文件并将其发送到标准输出

#include <fstream>
#include <cassert>
using namespace std;  int main(){  ifstream in("test.cpp");  assert(in);  cout << in.rdbuf() ;
}  

使用带streambuf的get()函数
有一种g e t()形式允许直接向另一对象的 s t r e a m b u f写入。第一个参数是s t r e a m b u f的目的,第二个参数是终止符,它终止g e t()函数。所以,打印一个文件到标准输出的另一方法是:

#include<fstream>
using namespace std;  int main(){  ifstream in("test.cpp");  while(in.get(*cout.rdbuf())){  in.ignore();  }
}  

探究streambuf相关推荐

  1. 吴恩达《深度学习》第四门课(2)卷积神经网络:实例探究

    2.1为什么要进行实例探究 (1)就跟学编程一样,先看看别人怎么写的,可以模仿. (2)在计算机视觉中一个有用的模型,,用在另一个业务中也一般有效,所以可以借鉴. (3)本周会介绍的一些卷积方面的经典 ...

  2. 异步编程之Promise(2):探究原理

    异步编程系列教程: (翻译)异步编程之Promise(1)--初见魅力 异步编程之Promise(2):探究原理 异步编程之Promise(3):拓展进阶 异步编程之Generator(1)--领略魅 ...

  3. Lucene.net中文分词探究

    一.中文分词方式: 中文分词几种常用的方式: A. 单字分词 单字分词,顾名思义,就是按照中文一个字一个字地进行分词.如:我们是中国人,效果:我/们/是/中/国/人. B. 二分法 二分法,就是按两个 ...

  4. 查询在应用程序运行得很慢, 但在SSMS运行得很快的原因探究

    原文:查询在应用程序运行得很慢, 但在SSMS运行得很快的原因探究 查询在应用程序运行得很慢, 但在SSMS运行得很快的原因探究 -理解性能疑点 1      引言 内容来自http://www.so ...

  5. 中文NLP的分词真有必要吗?李纪为团队四项任务评测一探究竟 | ACL 2019

    作者| Yuxian Meng.Xiaoya Li.Xiaofei Sun.Qinghong Han.Arianna Yuan. Jiwei Li 译者 | Rachel 责编 | Jane 出品 | ...

  6. 聚类分析案例:探究用户对物品类别的喜好细分降维

    聚类分析案例:探究用户对物品类别的喜好细分降维 数据如下: order_products__prior.csv:订单与商品信息 字段:order_id, product_id, add_to_cart ...

  7. 如何优化计算机网络课程,计算机论文:探究如何优化计算机网络课程教学方法.docx...

    计算机论文:探究如何优化计算机网络课程教学方法 一.引言 计算机网络的飞速发展不但加速了全球信息化的进程,也使我们的生活方式发生了深刻的变革.我们正处在一个数字化.网络化.信息化的时代,网络已经成为经 ...

  8. 求数的绝对值一定是正数_「口袋数学」绝对值的几何意义探究及应用,培优课程...

    哈喽,大家好!我们又见面了,欢迎继续关注[轩爸辅导]的[口袋数学].日更[每日一学][每日一练],帮助孩子日积月累,考出好的成绩.配套辅导,哪里不会学哪里,哪里出错练哪里,帮助孩子提高效率. 从数轴上 ...

  9. 探究!一个数据包在网络中的心路历程

    来自:小林coding 前言 想必不少小伙伴面试过程中,会遇到「当键入网址后,到网页显示,其间发生了什么」的面试题. 还别说,这真是挺常问的这题,前几天坐在我旁边的主管电话面试应聘者的时候,也问了这个 ...

最新文章

  1. ASP.NET将原始图片按照指定尺寸等比例缩放显示图片
  2. Go语言之并发示例-Pool(二)
  3. 如何制止OpenSSH漏洞?
  4. oracle 10g 用户管理笔记
  5. TF之LSTM:利用基于顺序的LSTM回归算法对DIY数据集sin曲线(蓝虚)预测cos(红实)(TensorBoard可视化)
  6. 也来谈谈这致命的手机充电器
  7. 消息订阅与发布(pubsub)
  8. python编辑器_资深程序员:学Python我推荐你用这几款编辑器
  9. css布局模型详细介绍
  10. lua笔记之userdata
  11. cmd 命令行中乱码问题解决
  12. 中级.NET开发人员应该知道些什么?
  13. 释放被束缚的页面 – V1.1.0
  14. (转)区块链热潮背后的五大技术隐忧
  15. 仿小米php,我的仿小米商城代码
  16. 《原则》瑞达利欧_epub+mobi+azw3
  17. 【linux】linux下修改鼠标指针
  18. 【win10专业版】3dmax卸载不干净如何解决
  19. CTF题库NSCTF crypto50
  20. JavaWeb之HTML标签

热门文章

  1. ubuntu ftp server-转
  2. java异常网,Java异常实践事项
  3. java与jsp的关系_浅谈servlet与jsp的关系
  4. 最新安徽省二c语言题型_2020年成人高考考试考前1个月最新最全备考攻略+资料,考生必看,建议收藏!...
  5. 字符数组查找-----拉手笔试
  6. redhat linux手动RPM安装gcc,g++
  7. Hive jdbc执行seelct 语句时报 return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
  8. NoSQL Manager for MongoDB 破解
  9. 24.23%!汉能高效硅异质结薄膜电池效率再次刷新中国纪录
  10. AndroidJava保留小数位数的几种写法