c++ iostream库的一些讨论

        大家好,今天慕晓君给大家介绍的是c++中常见的I/O库:iostream,介绍的结构如上图所示,iostream库主要包含两个类型(类),输入流istream和输出流ostream,输入流中主要使用的对象是cin,表示将控制台的键盘输入内容输入到cin后面的变量中,基本语法为cin >> variable;输出流常用的有三个对象,分别是cout、cerr和clog,这三种从本质上将都是将流符号后面的内容输入到控制台,cout为一般控制台输出,cerr为警告和错误信息输出,clog为日志记录的输出,但是为什么同样的东西要出现3次呢?原因很简单,cout为一般输出,主要用于将结果显示给用户,我们知道,在软件设计中,错误和警告信息、以及日志信息是很重要的一块,几乎在每个大型项目中,都需要有专门的错误报告和日志记录,理论上讲cout也可以用于实现cerr和clog的功能,但是,第一,cout主要作为控制台输出,如果要将错误和警告信息以及日志信息输出到文件,那么cout实现的时候就得考虑到输出位置的选择,会很麻烦;第二,三者分开使语句清晰,有利于程序员根据需求“重构”cerr和clog代码。
上述设计体现了程序设计的简单性和实用性。


        上图是简单的iostream继承层次,慕晓君和同学讨论时,注意到,和第一幅图不一样,是iostream是继承ostream和istream,而不是ostream和istream继承iostream,这是为什么呢?慕晓君水平不足,想到的是可能因为如果用ostream和istream继承iostream,那stringstream和fstream就需要在istream和ostream中实现两次,不满足程序设计的避免重复原则,后面,慕晓君的同学提出,拿文件流举例,有些文件是只读的,有些文件是只写的,如果只在iostream里实现一个可读写的,那么这样会导致文件的不安全,实际中,对文件的操作需要分成只读、只写和读写皆可的情况,这样实现也具有很强的使用性。

        综上所述,iostream的继承层次具有简单性、安全性和实用性。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

句号(在IT行业摸爬滚打)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值