C程序设计(第二版)第九章流类库与输入输出
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
流是一种抽象的概念,负责在数据的产生者和数据 的使用者之间建立联系,并管理数据的流动。
整理ppt
1
第九章 流类库和输入/输出
9.1 C++的基本流类体系 9.2 输入输出的格式控制(选读) 9.3 标准设备的输入/输出
ቤተ መጻሕፍቲ ባይዱ
9.4 文件的输入与输出 9.5 字符串流(选读) 9.6 文件与对象
整理ppt
basic_ ios
指针 basic_ streambuf
basic_ istream basic_ ostream
basic_ ifstream
basic_ iostream basic_ ofstream
basic_ fstream
图9.1 主要输入/输整出理p流pt 模板层次
3
9.1 C++的基本流类体系
有关模板派生请参见教学指导书第8章中“类模板的派 生的讨论”
整理ppt
4
9.1 C++的基本流类体系
标准输入/输出流对象:
在C++的流类库中定义了四个全局流对象:cin, cout,cerr和clog。可以完成人机交互的功能。
cin标准输入流对象,键盘为其对应的标准设备。 cout标准输出流对象,显示器为标准设备。 cerr和clog标准错误输出流,输出设备是显示器。 其中cin、cout和clog是带缓冲区的,缓冲区由 streambuf类对象来管理。而cerr为非缓冲区流,一旦 错误发生立即显示。 要使用这四个功能,必须包含<iostream>文件。
right=0x0004,
//输出右对齐
internal=0x0008, //在输出符号或数制字符后填充
dec=0x0010, //在输入输出时将数据按十进制处理
oct=0x0020, //在输入输出时将数据按八进制处理
hex=0x0040, //在输入输出时将数据按十六进制处理
整理ppt
7
9.2 输入输出的格式控制(选读)
流类体系说明:
basic_streambuf不是basic_ios的派生类,而是一个 独立的类,只是basic_ios有一个保护访问限制的指针指 向它。 类basic_streambuf的作用是管理一个流的缓冲区。
basic_ios类模板提供了对流进行格式化输入输出和错 误处理的成员函数。所有派生都是公有派生。 basic_istream类模板提供完成提取(输入)操作的成员函 数,而basic_ostream类模板提供完成插入(输出)操作 的成员函数。basic_iostream类本质上是前两者的聚合, 并没有增加成员。派生全部为公有派生。
整理ppt
5
9.1 C++的基本流类体系
提取运算符和插入运算符:
重载的提取运算符“>>”(stream_extraction operator) 和插入运算符“<<”(stream_insertion operator),执行输 入/输出操作。
“提取”的含义是指输入操作,可看作从流中提取一个字 符序列。
“插入”的含义是指输出操作,可看作向流中插入一个字 符序列。
cin使用提取运算符。 cout、cerr和clog使用插入运算符。
文件:
文件处理完成永久保存的功能。 在Windows下不同的C++平台,都为文件功能作了扩充, 在VC++的MFC编程中采用了序列化(Serialization)。
整理ppt
6
9.2 输入输出的格式控制(选读)
格式控制符:
C++在类ios_base中提供格式化输入输出。这些格式 是对所有文本方式的输入输出流均适用。格式控制符 定义为公有的无名枚举类型,在VC++6.0中定义为:
enum{
skipws=0x0001,
//跳过输入中的空白字符
left=0x0002,
//输出左对齐
showbase=0x0080, //在输出时带有表示数制基的字符
showpoint=0x0100, //输出浮点数时,必定带小数点
uppercase=0x0200, //输出十六进制,用大写
showpos=0x0400,
//输出正数时,加”+”号
scientific=0x0800,
//科学数方式输出浮点数
2
9.1 C++的基本流类体系
流类体系:以抽象类模板basic_ios为基类,流类模板派生体系见图
9.1。整个流类模板体系的标准I/O在头文件<iostream>中说明,它包含 头文件<ios>、<streambuf>、<istream>和<ostream>。而输入输出 文件流部分在头文件<fstream>中说明。
第九章 流类库和输入/输出
本章的最主要目的就是把对象保存到磁盘文件中并从 磁盘文件重建对象。
C++语言中并没有输入/输出语句,而是在标准库 里包含了一个I/O流类库,它与标准模板库同为C++标 准库中最重要的组成部分。数据从一个对象到另一个对 象的传送被抽象为“流”。数据的输入/输出就是通过 输入/输出流来实现的。
fixed=0x1000,
//定点数方式输出实数
unitbuf=0x2000,
//插入后,立即刷新流
stdio=0x4000} //插入后,立即刷新stdout和stderr
对不同的C++平台,枚举常量名相同,但所取值及枚举 类型名不一定相同。后文的枚举常量也是如此。为保证 通用性,实际只用枚举常量名而不用数值
空白字符包括:空格、制表、垂直制表、换行、换页和 回车。
整理ppt
8
9.2 输入输出的格式控制(选读)
该枚举量说明中每一个枚举量实际对应两字节数据(16 位)中的一个位,所以可以同时采用几个格式控制,只 要把对应位置1即可,这样既方便又节约内存。取多种 控制时,用或“|”运算符来合成,合成为一个长整型数, 在ios中为: protected:
点击访问格式控制标志相关接口函数
【例9.1】整型数输出。
long x_flags;
点击访问x_flags的重载函数定义
整理ppt
9
9.2 输入输出的格式控制(选读)
输入输出流格式控制标志:
protected: int x_precision; //标志浮点数精度,默认为6位 int x_width; //输出域宽,默认域宽为0, //重设域宽只对其后第一输出项有效,如域宽不足,则不受限制 char x_fill; //标志域宽有富余时填入的字符
整理ppt
1
第九章 流类库和输入/输出
9.1 C++的基本流类体系 9.2 输入输出的格式控制(选读) 9.3 标准设备的输入/输出
ቤተ መጻሕፍቲ ባይዱ
9.4 文件的输入与输出 9.5 字符串流(选读) 9.6 文件与对象
整理ppt
basic_ ios
指针 basic_ streambuf
basic_ istream basic_ ostream
basic_ ifstream
basic_ iostream basic_ ofstream
basic_ fstream
图9.1 主要输入/输整出理p流pt 模板层次
3
9.1 C++的基本流类体系
有关模板派生请参见教学指导书第8章中“类模板的派 生的讨论”
整理ppt
4
9.1 C++的基本流类体系
标准输入/输出流对象:
在C++的流类库中定义了四个全局流对象:cin, cout,cerr和clog。可以完成人机交互的功能。
cin标准输入流对象,键盘为其对应的标准设备。 cout标准输出流对象,显示器为标准设备。 cerr和clog标准错误输出流,输出设备是显示器。 其中cin、cout和clog是带缓冲区的,缓冲区由 streambuf类对象来管理。而cerr为非缓冲区流,一旦 错误发生立即显示。 要使用这四个功能,必须包含<iostream>文件。
right=0x0004,
//输出右对齐
internal=0x0008, //在输出符号或数制字符后填充
dec=0x0010, //在输入输出时将数据按十进制处理
oct=0x0020, //在输入输出时将数据按八进制处理
hex=0x0040, //在输入输出时将数据按十六进制处理
整理ppt
7
9.2 输入输出的格式控制(选读)
流类体系说明:
basic_streambuf不是basic_ios的派生类,而是一个 独立的类,只是basic_ios有一个保护访问限制的指针指 向它。 类basic_streambuf的作用是管理一个流的缓冲区。
basic_ios类模板提供了对流进行格式化输入输出和错 误处理的成员函数。所有派生都是公有派生。 basic_istream类模板提供完成提取(输入)操作的成员函 数,而basic_ostream类模板提供完成插入(输出)操作 的成员函数。basic_iostream类本质上是前两者的聚合, 并没有增加成员。派生全部为公有派生。
整理ppt
5
9.1 C++的基本流类体系
提取运算符和插入运算符:
重载的提取运算符“>>”(stream_extraction operator) 和插入运算符“<<”(stream_insertion operator),执行输 入/输出操作。
“提取”的含义是指输入操作,可看作从流中提取一个字 符序列。
“插入”的含义是指输出操作,可看作向流中插入一个字 符序列。
cin使用提取运算符。 cout、cerr和clog使用插入运算符。
文件:
文件处理完成永久保存的功能。 在Windows下不同的C++平台,都为文件功能作了扩充, 在VC++的MFC编程中采用了序列化(Serialization)。
整理ppt
6
9.2 输入输出的格式控制(选读)
格式控制符:
C++在类ios_base中提供格式化输入输出。这些格式 是对所有文本方式的输入输出流均适用。格式控制符 定义为公有的无名枚举类型,在VC++6.0中定义为:
enum{
skipws=0x0001,
//跳过输入中的空白字符
left=0x0002,
//输出左对齐
showbase=0x0080, //在输出时带有表示数制基的字符
showpoint=0x0100, //输出浮点数时,必定带小数点
uppercase=0x0200, //输出十六进制,用大写
showpos=0x0400,
//输出正数时,加”+”号
scientific=0x0800,
//科学数方式输出浮点数
2
9.1 C++的基本流类体系
流类体系:以抽象类模板basic_ios为基类,流类模板派生体系见图
9.1。整个流类模板体系的标准I/O在头文件<iostream>中说明,它包含 头文件<ios>、<streambuf>、<istream>和<ostream>。而输入输出 文件流部分在头文件<fstream>中说明。
第九章 流类库和输入/输出
本章的最主要目的就是把对象保存到磁盘文件中并从 磁盘文件重建对象。
C++语言中并没有输入/输出语句,而是在标准库 里包含了一个I/O流类库,它与标准模板库同为C++标 准库中最重要的组成部分。数据从一个对象到另一个对 象的传送被抽象为“流”。数据的输入/输出就是通过 输入/输出流来实现的。
fixed=0x1000,
//定点数方式输出实数
unitbuf=0x2000,
//插入后,立即刷新流
stdio=0x4000} //插入后,立即刷新stdout和stderr
对不同的C++平台,枚举常量名相同,但所取值及枚举 类型名不一定相同。后文的枚举常量也是如此。为保证 通用性,实际只用枚举常量名而不用数值
空白字符包括:空格、制表、垂直制表、换行、换页和 回车。
整理ppt
8
9.2 输入输出的格式控制(选读)
该枚举量说明中每一个枚举量实际对应两字节数据(16 位)中的一个位,所以可以同时采用几个格式控制,只 要把对应位置1即可,这样既方便又节约内存。取多种 控制时,用或“|”运算符来合成,合成为一个长整型数, 在ios中为: protected:
点击访问格式控制标志相关接口函数
【例9.1】整型数输出。
long x_flags;
点击访问x_flags的重载函数定义
整理ppt
9
9.2 输入输出的格式控制(选读)
输入输出流格式控制标志:
protected: int x_precision; //标志浮点数精度,默认为6位 int x_width; //输出域宽,默认域宽为0, //重设域宽只对其后第一输出项有效,如域宽不足,则不受限制 char x_fill; //标志域宽有富余时填入的字符