
第七章输入输出流 7.1C++的输入与输出 7.2标准输出流 7.3标准输入流 7.4文件操作与文件流 7.5字符串流 0
0 7.1 C++的输入与输出 7.2 标准输出流 7.3 标准输入流 7.4 文件操作与文件流 7.5 字符串流 第七章 输入输出流

7.1C++的输入和输出 7.1.1输入输出的含义 从操作系统角度看,每一个与主机相连的输入输 出设备都被看做一个文件。 键盘是输入文件,显示器是输出文件。 磁盘或光盘是输入输出文件。 程序的输入:从输入文件将数据传送给程序; 程序的输出:从程序将数据输出给输出文件。 1
1 7.1 C++的输入和输出 7.1.1 输入输出的含义 从操作系统角度看,每一个与主机相连的输入输 出设备都被看做一个文件。 键盘是输入文件,显示器是输出文件。 磁盘或光盘是输入输出文件。 程序的输入:从输入文件将数据传送给程序; 程序的输出:从程序将数据输出给输出文件

7.1C++的输入和输出 C++的输入输出包括以下三个方面的内容: 标准设备输入输出:从键盘输入,输出到显示器。简称 标准I/O。 以外存储器文件为对象的输入输出:磁盘文件中输入数 据,将数据输出到磁盘文件中。简称文件/O。 对内存中指定的空间进行输入输出。通常指定一个字符 数组作为存储空间,它称为字符串输入输出,简称串/O C++采取了不同的方法,实现这三种输入输出。 2
2 7.1 C++的输入和输出 C++的输入输出包括以下三个方面的内容: 标准设备输入输出:从键盘输入,输出到显示器。简称 标准I/O。 以外存储器文件为对象的输入输出:磁盘文件中输入数 据,将数据输出到磁盘文件中。简称文件I/O。 对内存中指定的空间进行输入输出。通常指定一个字符 数组作为存储空间,它称为字符串输入输出,简称串I/O C++采取了不同的方法,实现这三种输入输出

7.1.2.C++的1/O对C的扩展-类型安全和可扩展性 A、类型安全: >C语言中用printf和scanfi进行输入输出,不对数据类 型作合法性检查。 例如:scanf"%d",&i: scanf(“%d”,i):/漏写& 或许会导致严重的后果。 编译系统认为语句合法,不对数据类型进行合法性检查。 >C++为了与C兼容,保留了用printf和scanf输入输出, 还有自己特有的输入输出,并对数据类型进行严格的 检查,所以C++的/O操作是类型安全的
3 7.1.2. C++的I/O对C的扩展-类型安全和可扩展性 A、类型安全: ➢C语言中用printf和scanf进行输入输出,不对数据类 型作合法性检查。 例如: scanf("%d",&i); scanf(“%d”,i); // 漏写& 或许会导致严重的后果。 编译系统认为语句合法,不对数据类型进行合法性检查。 ➢C++为了与C兼容,保留了用printf和scanf输入输出, 还有自己特有的输入输出,并对数据类型进行严格的 检查,所以C++的I/O操作是类型安全的

7.1.2C++的/O对C的扩展-类型安全和可扩展性 B、可扩展性: >用printf和scanfi可以输入输出标准类型的数据,无 法输出用户自己声明的类型数据。 >C++的输入输出操作可以输出自己定义的数据类型 (重载),体现了可扩展性。 >C++提供/O类库实现丰富的1/O的功能,同时也变 得复杂。 4
4 7.1.2 C++的I/O对C的扩展-类型安全和可扩展性 B、可扩展性: ➢用printf和scanf可以输入输出标准类型的数据,无 法输出用户自己声明的类型数据。 ➢C++的输入输出操作可以输出自己定义的数据类型 (重载),体现了可扩展性。 ➢C++提供I/O类库实现丰富的I/O的功能,同时也变 得复杂

7.1.3、C++输入输出流 1、流的定义 C++的输入输出流是指由若干字节组成的字 节序列。 在内存中的缓冲区,用来存放流中的数据。 >cout输出缓冲区-→显示器。 >cin键盘缓存区→程序的输入缓冲区→程序 总之:内存缓冲区中的数据就是流
5 7.1.3、 C++输入输出流 1、流的定义 C++的输入输出流是指由若干字节组成的字 节序列。 在内存中的缓冲区,用来存放流中的数据。 ➢cout 输出缓冲区-→显示器。 ➢cin 键盘缓存区→程序的输入缓冲区→程序 总之:内存缓冲区中的数据就是流

7.1.3C++输入输出流 2、流类与流对象: 输入输出流被定义成类,C++的/O库中的类称 为流类(stream class)。用流类定义的对象称为流 对象。 cout和cin并不是C++提供的语句,它们是 iostream类的对象。 6
6 2、流类与流对象: 输入输出流被定义成类,C++的 I/O 库中的类称 为流类( stream class )。用流类定义的对象称为流 对象。 cout 和 cin 并不是C++提供的语句,它们是 iostream类的对象。 7.1.3 C++输入输出流

7.1.3 C++输入输出流 3、iostream类库中有关的类 类名 作用 在哪个头文件中声明 ios 抽象基类 iostream istream 通用输入流和其他输入流的基类 iostream ostream 通用输出流和其他输出流的基类 iostream 通用输入输出流和其他输入输出流的基类 iostream iostream ifstream 输入文件流类 fstream ofstream 输出文件流类 fstream fstream 输入输出文件流类 fstream istrstream 输入字符串流类 strstream ostrstream 输出字符串流类 strstream strstream 输入输出字符串流类 strstream 7
7 3、iostream 类库中有关的类 strstream strstream strstream 输入字符串流类 输出字符串流类 输入输出字符串流类 istrstream ostrstream strstream fstream fstream fstream 输入文件流类 输出文件流类 输入输出文件流类 ifstream ofstream fstream iostream iostream iostream 通用输入流和其他输入流的基类 通用输出流和其他输出流的基类 通用输入输出流和其他输入输出流的基类 istream ostream iostream ios 抽象基类 iostream 类 名 作 用 在哪个头文件中声明 7.1.3 C++输入输出流

C++的输入输出如下: C++的/O类库的类关系(P229页) ios 10s istream ostream istream ostream ifstream iostream ofstream iostream fstream 图7.1 图7.2 8
8 C++的输入/输出如下: C++的I/O 类库的类关系 ( P229页 )

7.1.3 C++输入输出流 4、与iostream类库有关的头文件(理解) >iostream包含了对输入输出流进行操作所需的 基本信息 >fstream用于用户管理的文件的/O操作 >strstream用于字符串流I/O >stdiostream混合使用c和c++ >iomanip使用格式化I/O时应包含此头文件 9
9 4、与iostream类库有关的头文件(理解) ➢iostream包含了对输入输出流进行操作所需的 基本信息 ➢fstream用于用户管理的文件的I/O操作 ➢strstream用于字符串流I/O ➢stdiostream混合使用c和c++ ➢iomanip使用格式化I/O时应包含此头文件 7.1.3 C++输入输出流