第10章输入/输出流 101输入/输出流概述 10.2插入运算符及提取运算符 103格式化输入输出 104文件的输入输出 10.5输入输出文件流 fstream
第10章 输入/输出流 10.1 输入/输出流概述 10.2 插入运算符及提取运算符 10.3 格式化输入输出 10.4 文件的输入输出 10.5 输入输出文件流fstream
第10章输入/输出流 10.1输入/输出流概述 10.1.1流的概念 “流”是一种抽象的形态,指的是计算机里的数据从一个对 象流向另一个对象。这里数据流入和流出的对象通常是指计算机 中的屏幕、内存、文件等一些输入输出设备。数据的流动就是由 1O流类来实现的。 如预定义流对象cin和cou实现的数据流动过程: 内存 显示器 键盘 内存 薮据 据 流对象cout 流对象cin C十中的∥O流负责建立程序与设备对象之间的连接,它像一 个桥梁,沟通了数据的产生者和消费者,使他们之间产生数据的 流动
10.1 输入/输出流概述 10.1.1 流的概念 “流”是一种抽象的形态,指的是计算机里的数据从一个对 象流向另一个对象。这里数据流入和流出的对象通常是指计算机 中的屏幕、内存、文件等一些输入输出设备。数据的流动就是由 I/O流类来实现的。 如预定义流对象cin和cout实现的数据流动过程: C++中的I/O流负责建立程序与设备对象之间的连接,它像一 个桥梁,沟通了数据的产生者和消费者,使他们之间产生数据的 流动 。 第10章 输入/输出流 内存 数据流 显示器 流对象cout 键盘 数据流 内存 流对象cin
第10章输入/输出流 10.1输入/输出流概述 10.12流类库的结构 10S stream ostream iftream istrstream istream withassign oftream ostrstream ostream withassign iostream fstream strstream stdiostream streambuf iostream init filebuf strstreambuf stdiobuf
10.1 输入/输出流概述 10.1.2 流类库的结构 第10章 输入/输出流 streambuf filebuf strstreambuf stdiobuf ostream ios istream iftream istrstream istream_withassign oftream ostrstream ostream_withassign iostream fstream strstream stdiostream Iostream_init
第10章输入/输出流 I/O流类说明表 类名 说 明 包含头文件 抽象流基类 lOS 所有输入输出流类的基类osh 输入流类 istream 通用输入流类和其他输入流的基类 iostream.h ifstream 输入文件流类 fstream. h strstream 输入字符串流类 strstr. h stream_withassign cin的输入流类 iostream. h 输出流类 ostream 通用输出流类和其他输出流的基类 iostream.h onstream 输出文件流类 fstream. h ostrstream 输出字符串流类 strstr. h iostream withassign cout、cer、cog的输出流类| iostream.h
第10章 输入/输出流 类 名 说 明 包含头文件 抽象流基类 ios 所有输入输出流类的基类 ios.h 输入流类 istream 通用输入流类和其他输入流的基类 iostream.h ifstream 输入文件流类 fstream.h istrstream 输入字符串流类 strstrea.h istream_withassign cin的输入流类 iostream.h 输出流类 ostream 通用输出流类和其他输出流的基类iostream.h ofstream 输出文件流类 fstream.h ostrstream 输出字符串流类 strstrea.h ostream_withassign cout、cerr、clog的输出流类 iostream.h I/O流类说明表
第10章输入/输出流 I/O流类说明表(续) 输入输出流类 iostream通用输入输出流类和其他输入/输出 iostream . h 流类的基类 stream 输入输出文件流类 fstream. h strstream 输入输出字符串流类 strstrea h stdiostream标准o文件的输入输出类 stdiostrh 流缓冲区类 streambuf抽象流缓冲区基类 iostream. h filebuf 磁盘文件的流缓冲区类 fstream. h strstreambuf字符串的流缓冲区类 strstrea. h stdiobuf 标准O文件的流缓冲区类 stdiostr. h 预先定义的流初始化类 ostream init初始化预定义流对象的类 iostream. h
输入输出流类 iostream 通用输入/输出流类和其他输入/输出 流类的基类 iostream.h fstream 输入/输出文件流类 fstream.h strstream 输入/输出字符串流类 strstrea.h stdiostream 标准I/O文件的输入输出类 stdiostr.h 流缓冲区类 streambuf 抽象流缓冲区基类 iostream.h filebuf 磁盘文件的流缓冲区类 fstream.h strstreambuf 字符串的流缓冲区类 strstrea.h stdiobuf 标准I/O文件的流缓冲区类 stdiostr.h 预先定义的流初始化类 Iostream_init 初始化预定义流对象的类 iostream.h 第10章 输入/输出流 I/O流类说明表(续)
第10章输入/输出流 10.1输入/输出流概述 10.12流类库的结构(续) 流类库中与文件输入输出相关的文件流类结构: Istream ostream fstream Iostream ofstream fstream 返回
10.1 输入/输出流概述 10.1.2 流类库的结构(续) 流类库中与文件输入输出相关的文件流类结构: 第10章 输入/输出流 ios istream ostream ifstream iostream ofstream fstream 返 回
第10章输入/输出流 10.2插入运算符与提取运算符 ‖1.插入运算符 插入运算符“<<":通常用于插入数据到一个输出流对象中,流 对象再进一步将数据输出到它所关联的设备中。 如:cout<<" Hello world! 插入运算符“<”适用于任何输出流对象,如输出文件流 ofstream的对象等。“<<”右侧可以是任何标准数据类型的变量及 常量,也可以是字符串变量及常量 如:cout<<i<<s<<3.14
10.2 插入运算符与提取运算符 1. 插入运算符 插入运算符“<<”:通常用于插入数据到一个输出流对象中,流 对象再进一步将数据输出到它所关联的设备中。 如:cout << “Hello World!” 插入运算符“<<”适用于任何输出流对象,如输出文件流 ofstream的对象等。“<<”右侧可以是任何标准数据类型的变量及 常量,也可以是字符串变量及常量。 如:cout << i << ‘s’ << 3.14 << ‘ ’ << f ; 第10章 输入/输出流
第10章输入/输出流 10.2插入运算符与提取运算符 2提取运算符 提取运算符 通常用于从输入流对象中提取数据。 *H: int i; char buf[ 100] cIn >>I cin > buf 提取运算符“>>”适用于任何输入流对象,如输入文件流 ifstream的对象等。“>”右侧可以是任意标准数据类型的变量 也可以是字符串变量。 注意:使用提取运算符“>>”提取数据时,以空白符(如空格、 回车、tab)作为数据的分割符,因此提取字符串数据时,不能提 取空白字符。 返回
10.2 插入运算符与提取运算符 2. 提取运算符 提取运算符“>>”:通常用于从输入流对象中提取数据。 如: int i; char buf[100]; cin >> i ; cin >> buf ; 提取运算符“>>”适用于任何输入流对象,如输入文件流 ifstream的对象等。“>>”右侧可以是任意标准数据类型的变量, 也可以是字符串变量。 注意:使用提取运算符“>>”提取数据时,以空白符(如空格、 回车、tab)作为数据的分割符,因此提取字符串数据时,不能提 取空白字符。 第10章 输入/输出流 返 回
第10章输入/输出流 10.3格式化输入输出 C艹中的○流可以完成输出输入的格式化操作,如设置域宽、 设置精度及整数进制等 设置输入输出格式的方法 使用流操纵元,只需把流操纵元插入(提取)到输出流(输 入流)中即可对输出流(输入流)进行格式化,如 setiosflags、 setw、 setfill\ setprecision、hex、oct等,使用流操纵元时需 在程序中包含头文件 ciomanip h 通过流的成员函数,即由流对象直接调用完成格式化,如 H setf, unsetf, width fill, precisions等。使用流成员函数的优 「点是在设置格式同时,可以返回以前的设置,便于恢复原来的 设置
10.3 格式化输入输出 C++中的I/O流可以完成输出/输入的格式化操作,如设置域宽、 设置精度及整数进制等。 设置输入输出格式的方法: ➢ 使用流操纵元,只需把流操纵元插入(提取)到输出流(输 入流)中即可对输出流(输入流)进行格式化,如setiosflags、 setw、setfill、setprecision、hex、oct等,使用流操纵元时需 在程序中包含头文件iomanip.h ➢ 通过流的成员函数,即由流对象直接调用完成格式化,如 setf、unsetf、width、fill、precision等。使用流成员函数的优 点是在设置格式同时,可以返回以前的设置,便于恢复原来的 设置。 第10章 输入/输出流
第10章输入/输出流 10.3格式化输入输出 10.3.1输出宽度控制:Setw和wdth 使用流操纵元sew和成员函数wdth可以控制当前域宽(即输 入/输出的字符数)。 注意: (1)宽度的设置仅适用于下一个插入或读取的数据 (2)在输出流中控制域宽,如果输出数据的宽度比设置的域宽 小,将以默认右对齐方式输出数据,左边空位会用填充字符来填 充(填充字符默认是空格)。 (3)如果输出数据的宽度比设置的宽度大,数据不会被截断, 将输出所有位数
10.3 格式化输入输出 10.3.1 输出宽度控制:setw和width 使用流操纵元setw和成员函数width可以控制当前域宽(即输 入/输出的字符数)。 注意: (1) 宽度的设置仅适用于下一个插入或读取的数据。 (2) 在输出流中控制域宽,如果输出数据的宽度比设置的域宽 小,将以默认右对齐方式输出数据,左边空位会用填充字符来填 充(填充字符默认是空格)。 (3) 如果输出数据的宽度比设置的宽度大,数据不会被截断, 将输出所有位数。 第10章 输入/输出流