c++ iostream库的一些讨论
2017-01-21 11:35
113 查看
转自http://blog.csdn.net/tl437002770/article/details/51102968?locationNum=11
大家好,今天慕晓君给大家介绍的是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的继承层次具有简单性、安全性和实用性。
大家好,今天慕晓君给大家介绍的是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的继承层次具有简单性、安全性和实用性。
相关文章推荐
- c++ iostream库的一些讨论
- More Effective C++议题【六】:关于自增、自减操作符的一些讨论
- 关于C和C++一些大神们的讨论
- C++学习的一些笔记-->1:C++ iostream和iostream.h的区别
- 关于C和C++一些大神们的讨论
- 关于C/C++的一些讨论
- C++中关于console光标的一些小心得,供新手们一起讨论。轻喷。我是个小菜鸡
- 关于C++中类与对象的一些讨论
- 关于何种情况下使用DataGrid、DataList或Repeater的一些讨论(2) ambushaa [翻译] [转]
- C++ 中的singleton 类的实现讨论
- 关于何种情况下使用DataGrid、DataList或Repeater的一些讨论
- 蛙蛙推荐:关于开发规范的一些讨论.doc
- 学习C++/CLI发现的一些问题,算不算Bug?
- 今天在其他的论坛上看到的一些c/c++得题!
- 关于C++的一些特别的站点
- 跨平台C++软件开发中,由于不同操作系统对Unicode的支持差异,而导致的一些问题及解决方案。
- 关于何种情况下使用DataGrid、DataList或Repeater的一些讨论
- OGRE·Irrlicht·初印象·及与古老意念关于不变性和可变性程度的讨论的一些总结
- 今年年初在iTSP上面发的一个讨论MDA的贴子,里面有一些小子的浅见,欢迎大家评论。
- 刚才在论坛上看到的一些学习C++的东东,可能对初学有点用