- 0
- 0
- 约 45页
- 2017-07-02 发布于湖北
- 举报
chapter7C的IO流概要1
第八章 输入输出流(input/output stream)
的基本概念及原理
8.1 预定义数据类型的输入/输出
8.1.1 基本情况及其优点
C++输入输出流的优点:
(一)重载运算符“”和“”能以函数重载的形式极大地扩大用途,在输入输出流中充分体现多态性。
C语言的输入/输出系统本来就灵活性大、功能比较完善。但它有一个较大缺点:无法处理众多的用户自定义数据类型(主要是结构体、类及其对象)。例如,有一个结构体类型exampl如下:
struct exampl {
int j;
char str[80]; } str_ex;
如欲输出此结构体对象str_ex的两个成员的内容,因而笼统地使用如下输出语句printf,
printf(“%exampl”, str_ex);
则将会出现编译错误。而C++的输出/输入系统则能很好地解决这个问题。
(二)类型安全(type-safe)
[例1]C语言输出语句中的类型错误(第一章已看过)
#include stdio.h
void main( )
{
int i=3;
double d=4.4;
printf(“%d\t%f\n”, i, d);
}
运行结果:
3 4.400000 对!
但如写错为:
printf(“%d\t%d\n”, i, d);
则编译时不出错,但运行结果错,为:
-26214
但在C++中只须写 couti“ ”dendl;而不必写出变量类型!就能得出
3 4.4,对!
始终不会出错!
(三)通过缓存增加功能。
(四)附带优点是书写方便以及显示中没有冗余字符,能自动略去浮点数尾数中的零(但如用户希望显示多余的零,也可显示)。
C++的输入/输出系统是对流的操作,也即操作数据使其流向对象,或从对象流出。
什么是流?流是从源头到目的的数据流动。当键入字符时,字符从键盘流入程序中;当将数据写入磁盘文件中时,数据自程序流动至磁盘上。
C++输入/输出流库是使用继承方法建立起来的一个输入/输出类库,它具有两个平行的基类,即streambuf类和ios类。所有其它流类都是从它们直接或间接地派生出来的。
streambuf类用于提供物理设备的接口,它提供缓冲或处理流的通用方法。它作为一个虚基类,具有类层次如下:
图 8.1
ios类及其派生类用于为用户提供使用流类的接口。它使用streambuf完成检查错误的格式化输入/输出操作,并支持对streambuf的缓冲区进行输入/输出时的格式化或非格式化转换。
ios类作为流库中的一个虚基类,派生出许多派生类,其主要层次如下:
图 8.2
8.1.2 预定义流(标准流)的基本原理
预定义输出输入流涉及较多的头文件有四个:ios.h,istream.h,ostream.h和iostream.h。下面分别介绍。
8.1.2.1 输出流的基本概念
输出流运算符“”是在头文件ostream.h的class ostream中定义的。从图8.2可以看出,class ostream是从class ios中派生出来的。因此下面先看一下用于定义class ios的头文件ios.h。
先看ios.h:
/***
*ios.h - definitions/declarations for the ios class.
***/
#ifndef NULL
#define NULL 0
#endif
#ifndef EOF
#define EOF (-1)
#endif
class ios {
public:
enum io_state { goodbit = 0x00,
eofbit = 0x01,
failbit = 0x02,
badbit = 0x04 };
(输出输入操作结果的状态)
enum open_mode { in = 0x01,
out = 0x02,
ate = 0x04,
app = 0x08,
trunc = 0x10,
nocreate = 0x20,
noreplace = 0x40,
binary = 0x80 };
enum seek_dir { beg
您可能关注的文档
- Chapter 5偏晶概要1.ppt
- Chapter03 Accounting Cycle (II) Adjustments, Work Sheet and Financial Statements基础会计英文版概要1.ppt
- Chapter03 Audit Reports(审计学英文版)概要1.ppt
- Chapter03电子表格建模的艺术概要1.ppt
- Chapter 9 Internet Marketing 网络市场概要1.ppt
- Chapter06 Audit Responsibilities and Objectives(审计学英文版)概要1.ppt
- Chapter02概要1.ppt
- Chapter04_Syntax Analysis语法分析BottomUp Parsing自底向上的分析概要1.ppt
- Chapter05 Legal Liability(审计学英文版)概要1.ppt
- Chapter06_SyntaxDirected Translation语义分析续3概要1.ppt
原创力文档

文档评论(0)