C++之“流”-第1课.上-掌握基本概念

了解流的本质是队列,懂得区分输入、输出流;理解“抽象流”和“具体流”之分,并掌握通过面向“抽象流”面程以获得代码更好的适用性

1. “流” 的目的与本质

流的目的是为了解耦。

1.1 “耦合 / Coupling ”是什么?

看出下图中的“耦合”关系了吗?

 事物之间存在不必要的关系,就叫合;这种关系往往会引发双方(甚至多方)在后续产生额外的牵制关系

1.2 “流”解的是谁和谁的耦合?

以“面对面”的方式(有时还加上“一对一”的关系)进行数据交接的双方,很容易产生时间、地点、方式上的耦合。

以生活中的事情为例,假设要求快递一定要将货物面对面的交给买家,甚至要求买家签字(其实,最早的快递,基本就是如此),那么,就至少有如下耦合:

  1. 时间耦合:不是你等快递员,就是快递员等你;
  2. 地点耦合:收货地点是公司,可是今天你请假在家;收货地点是家,可是今天你996;
  3. 方式耦合:不仅要当面交接,如买家因种种原因拒签,则容易引发双方纠纷;

程序中的数据交接,如果也只能走“面对面”这一种形式,同样容易引发各种耦合。因此,想要解除或降低A和B之间因数据交接产生的耦合,方法是在二者之间塞入一个第三方:数据缓存区。这各现实上快递和收货人之间的解耦的本质是一样:东西放在楼下小店、放在菜鸟驻站、放在丰巢……

1.3 🎞️视频一:“流” 的基本概念

来看一段视频——

C++之“流”-第1课:掌握基本概念

1.4 流的本质是队列

学完视频之后,我们了解到以下几点:

  1. 流的本质是队列,即:一个带有顺序保障的数据缓存区;
  2. 依据程序的视角,流区分为输入流和输出流;
  3. 向程序输入数据的流,叫输入流;程序向之输出数据的流,叫输出流;
  4. “ostream” 代表抽象的、泛指的输出流,文件输出流 “ofstream”和字符串输出流 “ostringstream” 都是输出流;
  5. “istream” 代表抽象的,泛指的输入流,文件输入流“ifstream”和字符串输入流“istringstream”都是输入流;
  6. 文件流可视为“外存流”,具有外存的特点:可理解为永久存储,但读写较慢;
  7. 字符串流可视为“内存流”,具有内存的特点:不能永远存储,但读写更快;
  8. 如上所述,文件流和内存流都可以既是输入流,也是输出流。

2. 下节预告

基于以上知识,下一节我们将动手写充满C++“流”风味的日志系统的第一个版本。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南郁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值