第12章输入輸出流 ◆12.1标准输入输出流 ◆12.2文件输入输出流
第12章 输入输出流 12.1 标准输入输出流 12.2 文件输入输出流
C+语言程序设计教程与实验 第12章输入输出流 121标准输入输出流 12.1.1输入输出流的概念 就像C语言一样,C++语言中也没有专门的输入/输出语句 C++的IO是以字节流的形式实现的,每一个C++编译系统都 带有一个面向对象的输入/输出软件包,这就是IO流类库。其 中,流是ⅣO流类的中心概念。 所谓流,是指数据从一个对象流向另一个对象,是从源到 矢的数据流的抽象引用,它是描述数据流的一种方式。C++ 的输入输岀系统是对流的操作,也就是将数据流向流对象 或从流对象流岀数据。在C艹+程序中,数据可以从键盘流入 到程序中,也可以从程序中流向屏幕或磁盘文件,把数
C++语言程序设计教程与实验 第12章 输入输出流 就像C语言一样,C++语言中也没有专门的输入/输出语句。 C++的I/O是以字节流的形式实现的,每一个C++编译系统都 带有一个面向对象的输入/输出软件包,这就是I/O流类库。其 中,流是I/O流类的中心概念。 所谓流,是指数据从一个对象流向另一个对象,是从源到 矢的数据流的抽象引用,它是描述数据流的一种方式。C++ 的输入输出系统是对流的操作,也就是将数据流向流对象, 或从流对象流出数据。在C++程序中,数据可以从键盘流入 到程序中,也可以从程序中流向屏幕或磁盘文件,把数 12.1标准输入输出流 12.1.1 输入输出流的概念
C+语言程序设计教程与实验 第12章输入输出流 据的流动抽象为“流”。流在使用前要被建立,使用后要被删除 ,还要使用一些特定的操作从流中获取数据或向流中添加数据。从 流中获取数据的操作称汋提取操作,冋流中添加数据的操作称为插 入操作。 流是C艹流库用继承方法建立起来的一个输入/输出类库,它具 有两个平行的基类即 streambuf类和ios类,所有其它的流类都是从 他们直接或间接地派生出来的。 在C艹语言系统中所有的流式输入输出操作都是借助ios类及其 派生类对象实现的。与cout和cin相关的类名为输出流类 ostream和 输入流类 istream,此二类都是ios类的派生
C++语言程序设计教程与实验 第12章 输入输出流 据的流动抽象为“流” 。流在使用前要被建立,使用后要被 删除 ,还要使用一些特定的操作从流中获取数据或向流中添加数据。从 流中获取数据的操作称为提取操作,向流中添加数据的操作称为插 入操作。 流是C++流库用继承方法建立起来的一个输入/输出类库,它具 有两个平行的基类即streambuf类和ios类,所有其它的流类都是从 他们直接或间接地派生出来的。 在C++语言系统中所有的流式输入输出操作都是借助ios类及其 派生类对象实现的。与cout和cin相关的类名为输出流类ostream和 输入流类istream,此二类都是ios类的派生
C+语言程序设计教程与实验 第12章输入输出流 类。cin是 istream类的一个对象;cout是 ostream类的 个对象。此二对象的特殊之处在于它们是编译器直接认识 的系统级的对象。而类 ostream和 istream则是在 iostream. h 头文件中声明的。实际上C+语言所支持的各种 流式输入输出的许多保留名都是某个具体类的对象名或对 象成员名。 由ios类可派生出许多派生类,而每个类的对象也不只 是内定的cin和cout,甚至可由用户定义对象用以支持不同 要求的流式输入输出。符号“>则是在类(派生类 )中定义的重载运算符函数
C++语言程序设计教程与实验 第12章 输入输出流 类。cin是istream类的一个对象;cout是ostream类的一 个对象。此二对象的特殊之处在于它们是编译器直接认识 的系统级的对象。而类ostream和istream则是在iostream.h 头文件中声明的。实际上C++语言所支持的各种 流式输入输出的许多保留名都是某个具体类的对象名或对 象成员名。 由ios类可派生出许多派生类,而每个类的对象也不只 是内定的cin和cout,甚至可由用户定义对象用以支持不同 要求的流式输入输出。符号“>”则是在类(派生类 )中定义的重载运算符函数
C+语言程序设计教程与实验 第12章输入输出流 121.2C++听有输入输出类的继承关系 C艹语言为实现数据的输入输出定义了许多复杂的类 这些类都以ios为基类,其余都是它的直接或间接派生 类。这些类以及它们之间的关系如图12.1所示 每种类标识符代表的含义如下: 10S: 根基类 ostream:输出流类 istream:输入流类 fstreambase:文件流基类 strstreambase:字符串流基类 ofstream:输出文件流类
C++语言程序设计教程与实验 第12章 输入输出流 C++语言为实现数据的输入输出定义了许多复杂的类 ,这些类都以ios为基类,其余都是它的直接或间接派生 类。这些类以及它们之间的关系如图12.1所示。 每种类标识符代表的含义如下: ios: 根基类 ostream: 输出流类 istream: 输入流类 fstreambase: 文件流基类 strstreambase: 字符串流基类 ofstream: 输出文件流类 12.1.2 C++所有输入输出类的继承关系
C+语言程序设计教程与实验 第12章输入输出流 ifstream:输入文件流类 ostrstream:输出字符串流类 1strstream:输入字符串流类 iostream:输入输出流类 fstream:输入输出文件流类 strstream:输入输出字符串流类
C++语言程序设计教程与实验 第12章 输入输出流 ifstream: 输入文件流类 ostrstream: 输出字符串流类 istrstream: 输入字符串流类 iostream: 输入输出流类 fstream: 输入输出文件流类 strstream: 输入输出字符串流类
C+语言程序设计教程与实验 第12章输入输出流 IOS Istream fstreambase strstreambase ostream ifstream Istrstream ofstream ostrstream iostream fstream strstream
C++语言程序设计教程与实验 第12章 输入输出流 ios istream fstreambase strstreambase ostream ifstream istrstream ofstream ostrstream iostream fstream strstream
C+语言程序设计教程与实验 第12章输入输出流 1标准流的设备名 标准I/O对象 cin:标准输入,默认设备为键盘,是 istream类的对象 cout:标准输出,默认设备为屏幕,是 ostream类的对 象 cerr:标准错误输出,没有缓冲,发送给它的内容立即 被输出,默认设备为屏幕。是 ostream类的对象 clog:带缓冲的标准出错信息输出,有缓冲,当缓冲区 满时被输出,默认设备为打印机,是 ostream类的对象。 上面的四个对象包含在 iostream. h标准头文件中
C++语言程序设计教程与实验 第12章 输入输出流 标准I/O 对象 cin:标准输入,默认设备为键盘,是istream类的对象 cout:标准输出,默认设备为屏幕,是ostream类的对 象 cerr:标准错误输出,没有缓冲,发送给它的内容立即 被输出,默认设备为屏幕。是ostream类的对象。 clog:带缓冲的标准出错信息输出,有缓冲,当缓冲区 满时被输出,默认设备为打印机,是ostream类的对象。 上面的四个对象包含在iostream.h标准头文件中。 1.标准流的设备名
C+语言程序设计教程与实验 第12章输入输出流 2.原理 C艹-流类提供了许多控制输入输出的成员函数,通过.或- 加以调用。例如:get(、 getline(函数。虽然可以利用成员 函数实现输入、输出,但非常不方便,为此C+中通过重载>>和 >和<<配合使用的特殊函数,称为操 作符或控制符。例如:endl和setw就是操作符 cout是 ostream类的全局对象,它在头文件 iostream.h中 的定义如下: ostream cou t( stdout);/这里, stdout作为该对象构 造时的参数对应每种基本数据类型, ostream类存在友元,它们 都在 iostream.h中声明。例如:
C++语言程序设计教程与实验 第12章 输入输出流 C++流类提供了许多控制输入输出的成员函数,通过.或-> 加以调用。例如:get()、getline()函数。虽然可以利用成员 函数实现输入、输出,但非常不方便,为此C++中通过重载>>和 >和<<配合使用的特殊函数,称为操 作符或控制符。例如: endl和setw就是操作符。 cout是ostream类的全局对象,它在头文件iostream.h中 的定义如下: ostream cout(stdout); //这里,stdout作为该对象构 造时的参数对应每种基本数据类型,ostream类存在友元,它们 都在iostream.h中声明。例如: 2.原理
C+语言程序设计教程与实验 第12章输入输出流 ostream& operator>( float &f) istream& operator>>( int &n) istream& operator>>( char*psz)
C++语言程序设计教程与实验 第12章 输入输出流 ostream& operator>( float &f); istream& operator>>( int &n); istream& operator>>( char*psz);