文档详情

面向对象程序设计语言C++第2版 教学课件 作者 陈文宇 面向对象程序设计语言C++ 第8章 流库.ppt

发布:2017-08-17约3.4千字共15页下载文档
文本预览下载声明
面向对象程序设计语言C++ 电子科技大学示范性软件学院 * 第八章 流库 8.1 C++的I/O系统 C++为了与C兼容,仍然保留了printf和scanf进行输入输出的方法。在C++的输入输出中,编译系统对数据类型进行严格的检查,凡是类型不正确的数据都不可能通过编译,因此C++的I/O操作是类型安全的。 但printf和scanf有一个重大的缺陷:就是它们不能处理用户自定义类型。所以,C++引入了自己的输入输出方式:流。C++采用继承的方法建立了比较实用的流库,流库不仅提供了与C的I/O系统相似的功能,而且功能更强灵活性更大,能方便进行扩充。 * 第八章 流库 8.2 C++流库的结构 8.2.1输入输出流的含义 输入是数据从输入设备(如键盘,磁盘,鼠标等)到内存的过程,输出是内存的数据输出到输出设备(如显示屏幕,打印机,磁盘等)的过程。输入输出过程中,数据像流水一样从一处流到另外一处,C++形象的描述该过程为流。流的内容可以是ASCII码字符、二进制形式的数据、图形图像、数字音频视频或者其他形式的信息。 在C++中,输入输出流被定义为类。C++的I/O库中的类称为流类,用流类定义的对象称为流对象。比如cin是输入流对象,cout是输出流对象。 * 第八章 流库 8.2 C++流库的结构 8.2.2 C++流库的结构 * ios istream ostream istrstream ifstream ostrstream ofstream iostream istream_withassign ostream_withassign fstream stdiostream strstream streambuf fstream stdiostream strstream iostream_init 第八章 流库 8.3 输入和输出 istream 流类将运算符“”重载为输入运算符,它相对于系统预定义类型(如 int,char,float,double等类型)重载。ostream 流类将运算符“”重载为输出运算符,它也对系统预定义类型重载。对于预定义类型,用户可以方便地使用运算符“”和“”进行输入和输出。对于类类型,用户可以重载运算符“”和“”以满足自己的需要。 * 第八章 流库 8.4 格式控制 在很多情况下,对计算机的输入输出格式进行控制是非常有用的,C++ 提供了比较灵活的方式控制输入输出的格式。 在 C++ 中,可以用 C 中的 printf 和 scanf 语句进行格式化I/O,这是 C 程序员比较熟悉的方法。除此以外,C++ 还提供了两种进行格式控制的方法, 一种是使用ios类有关格式控制的成员函数,另外一种是使用称为操纵符(manipulator)的特殊类型的函数,下面介绍这两种格式控制的方法。 * 第八章 流库 8.4 格式控制 8.4.1 用ios类成员函数格式化 * 状态标志 含义 输入/输出 kipws 跳过输入中的空白 Input left 左对齐输出 Output right 右对齐输出 Output internal 在符号位和基指示符后填入字符 Output dec 转换基制为十进制 Input/Output oct 转换基制为八进制 Input/Output hex 转换基制为十六进制 Input/Output showbase 在输出中显示基指示符 Input/Output showpoint 输出时显示小数点 Output uppercase 十六进制输出时,表示制式的和表示数值的字符一律为大写 Output showpos 对正整数显示 Output scientific 科学表示法显示浮点数 Output fixed 定点形式显示浮点数 Output unitbuf 在输出操作后立即刷新所有流 Output stdio 在输出操作后刷新 stdout 和stderr Output 第八章 流库 8.4 格式控制 8.4.2 用操纵函数格式化 改变格式变量比较简单的方法是使用特殊的,但类似于函数的运算符,C++称之为操纵符。操纵符以一个流引用作为其参数,并返回同一流的引用,因此,它可嵌入到输入或输出操作的链中。例如,操纵函数 setw(int w) 是将域宽设置为w。 * 第八章 流库 8.4 格式控制 8.4.2 用操纵函数格式化 下表示C++与定义的操纵符: * 操纵符 含义 输入/输出 dec 设置十进制转换基格式标志 I/O hex 设置十六进制转换基格式标志 I/O oct 设置八进制转换基格式标志 I/O ws 提取空白字符 I endl 插入换行并刷新流 O ends 在串后插入终止空字符 O flush 刷新流 O setbase(int n) 置转换基格式为基 n(0
显示全部
相似文档