资源描述:
《cunit9输入输出流》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第九章流类库和输入/输出本章的最主要目的就是把对象保存到磁盘文件中并从磁盘文件重建对象。C++语言中并没有输入/输出语句,而是在标准库里包含了一个I/O流类库,它与标准模板库同为C++标准库中最重要的组成部分。数据从一个对象到另一个对象的传送被抽象为“流”。数据的输入/输出就是通过输入/输出流来实现的。流是一种抽象的概念,负责在数据的产生者和数据的使用者之间建立联系,并管理数据的流动。第九章流类库和输入/输出9.1C++的基本流类体系9.3标准设备的输入/输出9.2输入输出的格式控制(选读)9.4文件的输入与输出9.5字符串流(选读)9.6文件与对象9.1C++的基本流类体
2、系流类体系:以抽象类模板basic_ios为基类,流类模板派生体系见图9.1。整个流类模板体系的标准I/O在头文件中说明,包含头文件、、和。而输入输出文件流部分在头文件中说明。图9.1主要输入/输出流模板层次basic_iosbasic_streambufbasic_istreambasic_ostreambasic_ifstreambasic_iostreambasic_ofstreambasic_fstream指针9.1C++的基本流类体系basic_ios类模板提
3、供了对流进行格式化输入输出和错误处理的成员函数。所有派生都是公有派生。basic_istream类模板提供完成提取(输入)操作的成员函数,而basic_ostream类模板提供完成插入(输出)操作的成员函数。basic_iostream类是前两者的聚合,并没有增加成员。派生全部为公有派生。basic_streambuf不是basic_ios的派生类,而是一个独立的类,只是basic_ios有一个保护访问限制的指针指向它。类basic_streambuf的作用是管理一个流的缓冲区。*从技术上讲,模板并不能派生其他模板。但是这些模板只是预先定义了数据类型(如char或wchar
4、_t等等)的模板实例,这些实例都是类,所以可以继承。流类体系说明:9.1C++的基本流类体系标准输入/输出流对象:在C++的流类库中定义了四个全局流对象:cin,cout,cerr和clog。可以完成人机交互的功能。cin标准输入流对象,键盘为其对应的标准设备。cout标准输出流对象,显示器为标准设备。cerr和clog标准错误输出流,输出设备是显示器。其中cin、cout和clog是带缓冲区的,缓冲区由streambuf类对象来管理。而cerr为非缓冲区流,一旦错误发生立即显示。要使用这四个功能,必须包含文件。9.1C++的基本流类体系重载的提取运算符
5、“>>”(stream_extractionoperator)和插入运算符“<<”(stream_insertionoperator),执行输入/输出操作。“提取”的含义是指输入操作,可看作从流中提取一个字符序列。“插入”的含义是指输出操作,可看作向流中插入一个字符序列。cin使用提取运算符。cout、cerr和clog使用插入运算符。文件:文件处理完成永久保存的功能。在Windows下不同的C++平台,都为文件功能作了扩充,在VC++的MFC编程中采用了序列化(Serialization)。提取运算符和插入运算符:9.2输入输出的格式控制(选读)enum{skipws=0
6、x0001,//跳过输入中的空白字符left=0x0002,//输出左对齐right=0x0004,//输出右对齐internal=0x0008,//在输出符号或数制字符后填充dec=0x0010,//在输入输出时将数据按十进制处理oct=0x0020,//在输入输出时将数据按八进制处理hex=0x0040,//在输入输出时将数据按十六进制处理showbase=0x0080,//在输出时带有表示数制基的字符格式控制符:C++在类ios中提供格式化输入输出。这些格式是对所有文本方式的输入输出流均适用。格式控制符定义为公有的无名的枚举类型:9.2输入输出的格式控制(选读)sho
7、wpoint=0x0100,//输出浮点数时,必定带小数点uppercase=0x0200,//输出十六进制,用大写showpos=0x0400,//输出正数时,加”+”号scientific=0x0800,//科学数方式输出浮点数fixed=0x1000,//定点数方式输出实数unitbuf=0x2000,//插入后,立即刷新流stdio=0x4000}//插入后,立即刷新stdout和stderr该枚举量说明中每一个枚举量实际对应两字节数据(16位)中的一个位,所以可以同时采用几个格式控制,只要把对应位置1即可