13.1.1流 C++语言为了向程序员提供一个统一的VO接口,使程序的 设计尽可能地与具体设备无关,在程序员与具体设备之间设置 了一个抽象的概念一流( Stream) C++将各式各样的具体设备转化成一个称为流的逻辑设备, 并由流来管理对具体设备的O。而从程序员的角度来看,所 有流的行为都是相同的。因此,一个用来向磁盘写信息的操作 同样也可以向显示器进行输出。 C+在两种类型的流—一文本(吧ex流和二进制 ( Binary)流
13.1.1 流 C++ 语言为了向程序员提供一个统一的 I/O 接口,使程序的 设计尽可能地与具体设备无关,在程序员与具体设备之间设置 了一个抽象的概念——流(Stream)。 C++ 将各式各样的具体设备转化成一个称为流的逻辑设备, 并由流来管理对具体设备的 I/O。而从程序员的角度来看,所 有流的行为都是相同的。因此,一个用来向磁盘写信息的操作 同样也可以向显示器进行输出。 C++ 中存在两种类型的流——文本(Text )流和二进制 (Binary)流
13.1.2文件 流是C+语言对逻辑设备的抽象,而文件(Fe)则是C+语 言对具体设备的抽象。所有的流均具有相同的行为,而不同的 文件则具有不同的行为。比如,显示器(文件)只能接受信息, 因此只能对该文件进行写操作;对键盘文件只能进行读操作: 对磁盘文件则可以进行读、写操作 当程序与一个文件进行读写操作前,必须通过打开文件的操作 将文件与流联系起来。一旦该联系建立,对流的访问就是对该 具体设备的访问。若文件支持随机访问,则打开文件操作还会 将一个读指针和一个写指针置于文件的相应位置处,随着程序 对文件的访问,系统会自动移动这两个指针,以便为下一次访 问作好准备 在完成了对文件的读写操作后,应当通过关团文件操作将文件 与流的联系断开。关闭文件时,系统会自动根据具体情况对流 进行“刷新”。当程序正常结束时,系统会自动关闭所有已打 开的文件
13.1.2 文件 流是 C++ 语言对逻辑设备的抽象,而文件(File)则是 C++语 言对具体设备的抽象。所有的流均具有相同的行为,而不同的 文件则具有不同的行为。比如,显示器(文件)只能接受信息, 因此只能对该文件进行写操作;对键盘文件只能进行读操作; 对磁盘文件则可以进行读、写操作。 当程序与一个文件进行读写操作前,必须通过打开文件的操作 将文件与流联系起来。一旦该联系建立,对流的访问就是对该 具体设备的访问。若文件支持随机访问,则打开文件操作还会 将一个读指针和一个写指针置于文件的相应位置处,随着程序 对文件的访问,系统会自动移动这两个指针,以便为下一次访 问作好准备。 在完成了对文件的读写操作后,应当通过关闭文件操作将文件 与流的联系断开。关闭文件时,系统会自动根据具体情况对流 进行“刷新”。当程序正常结束时,系统会自动关闭所有已打 开的文件
13.1.3缓冲 所谓缓冲( Buffer),是指系统在内存中开辟一块叫做缓冲区 的区域,将欲写入文件或从文件中读出的数据暂时存放在该区 域中 个流可以是缓冲流(带有缓冲区的),也可以是非缓冲流。 对于缓冲流,只有当缓冲区已满(称为溢出, Overflow),或 者当前进入缓冲区的是一个新行符(仅文本流),流才会自动 刷新。而非缓冲流则将传给它的数据立即处理掉。 为了提高程序的运行效率,大多数流都是缓冲流。但有时为了 满足某些特殊的需要,系统也预定义了一些非缓冲流
13.1.3 缓冲 所谓缓冲(Buffer),是指系统在内存中开辟一块叫做缓冲区 的区域,将欲写入文件或从文件中读出的数据暂时存放在该区 域中。 一个流可以是缓冲流(带有缓冲区的),也可以是非缓冲流。 对于缓冲流,只有当缓冲区已满(称为溢出,Overflow),或 者当前进入缓冲区的是一个新行符(仅文本流),流才会自动 刷新。而非缓冲流则将传给它的数据立即处理掉。 为了提高程序的运行效率,大多数流都是缓冲流。但有时为了 满足某些特殊的需要,系统也预定义了一些非缓冲流
132C++的基本流类体系 1321基本流类体系 lOS streambuf istream ostream 注:图中的粗虚 线箭头不表示派 生关系,它表示 个指针。 iostream
13.2 C++ 的基本流类体系 13.2.1 基本流类体系 ios istream ostream iostream streambuf 注:图中的粗虚 线箭头不表示派 生关系,它表示 一个指针