C++语言程序设计进阶 (9).pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C++语言程序设计进阶 (9).pdf》由会员分享,可在线阅读,更多相关《C++语言程序设计进阶 (9).pdf(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第十一章 流类库与输入/输出 主要内容 I/O流的概念 流类库结构 输出流 输入流 输入/输出流 读写文本文件的格式控制 I/O 流的概念及流类库结构 程序与外界环境的信息交换 当程序与外界环境进行信息交换时,存在着两个对象:程序中的对象、文件对象。流 一种抽象,负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动。流对象与文件操作 程序建立一个流对象 指定这个流对象与某个文件对象建立连接 程序操作流对象 流对象通过文件系统对所连接的文件对象产生作用。提取与插入 读操作在流数据抽象中被称为(从流中)提取 写操作被称为(向流中)插入。流类库结构 流类列表 输出流概述 最重要的三个输出
2、流 ostream ofstream ostringstream 预先定义的输出流对象 cout 标准输出 cerr 标准错误输出,没有缓冲,发送给它的内容立即被输出。clog 类似于cerr,但是有缓冲,缓冲区满时被输出。标准输出换向 ofstream fout(b.out);streambuf*pOld =cout.rdbuf(fout.rdbuf();/cout.rdbuf(pOld);构造输出流对象 ofstream类支持磁盘文件输出 如果在构造函数中指定一个文件名,当构造这个文件时该文件是自动打开的 ofstream myFile(filename);可以在调用默认构造函数之后使用o
3、pen成员函数打开文件 ofstream myFile;/声明一个静态文件输出流对象 myFile.open(filename);/打开文件,使流对象与文件建立联系 在构造对象或用open打开文件时可以指定模式 ofstream myFile(filename,ios_base:out|ios_base:binary);文件输出流成员函数的三种类型 与操纵符等价的成员函数。执行非格式化写操作的成员函数。其它修改流状态且不同于操纵符或插入运算符的成员函数。文件输出流成员函数 open函数 把流与一个特定的磁盘文件关联起来。需要指定打开模式。put函数 把一个字符写到输出流中。write函数 把内
4、存中的一块内容写到一个文件输出流中 seekp和tellp函数 操作文件流的内部指针 close函数 关闭与一个文件输出流关联的磁盘文件 错误处理函数 在写到一个流时进行错误处理 向文本文件输出 标准输出设备显示器被系统看作文本文件,所以我们以向标准设备输出为例,介绍文本文件输出格式控制 插入运算符 插入()运算符 为所有标准C+数据类型预先设计的,用于传送字节到一个输出流对象。操纵符(manipulator)插入运算符与操纵符一起工作 控制输出格式。很多操纵符都定义在 ios_base类中(如hex())、头文件(如setprecision())。控制输出宽度 在流中放入setw操纵符或调用
5、width成员函数为每个项指定输出宽度。setw和width仅影响紧随其后的输出项,但其它流格式操纵符保持有效直到发生改变。dec、oct和hex操纵符设置输入和输出的默认进制。例 11-1 使用 width 控制输出宽度#include using namespace std;int main()double values=1.23,35.36,653.7,4358.24;for(int i=0;i 4;i+)cout.width(10);cout valuesi endl;return 0;输出结果:1.23 35.36 653.7 4358.24 例 11-2 使用 setw 操纵符指定
6、宽度/11_2.cpp#include#include#include using namespace std;int main()double values=1.23,35.36,653.7,4358.24;string names=Zoot,Jimmy,Al,Stan;for(int i=0;i 4;i+)cout setw(6)namesi setw(10)valuesi endl;return 0;输出结果:Zoot 1.23 Jimmy 35.36 Al 653.7 Stan 4358.24 例 11-3 设置对齐方式/11_3.cpp#include#include#include
7、 using namespace std;int main()double values=1.23,35.36,653.7,4358.24;string names=Zoot,Jimmy,Al,Stan;for(int i=0;i4;i+)cout setiosflags(ios_base:left)/左对齐 setw(6)namesi resetiosflags(ios_base:left)setw(10)valuesi endl;return 0;输出结果:Zoot 1.23 Jimmy 35.36 Al 653.7 Stan 4358.24 setiosflags 操纵符 这个程序中,通
8、过使用带参数的setiosflags操纵符来设置左对齐,setiosflags定义在头文件iomanip中。参数ios_base:left是ios_base的静态常量,因此引用时必须包括ios_base:前缀。这里需要用resetiosflags操纵符关闭左对齐标志。setiosflags不同于width和setw,它的影响是持久的,直到用resetiosflags重新恢复默认值时为止。setiosflags的参数是该流的格式标志值,可用按位或(|)运算符进行组合 setiosflags 的参数(流的格式标识)ios_base:skipws 在输入中跳过空白。ios_base:left 左对齐
9、值,用填充字符填充右边。ios_base:right 右对齐值,用填充字符填充左边(默认对齐方式)。ios_base:internal 在规定的宽度内,指定前缀符号之后,数值之前,插入指定的填充字符。ios_base:dec 以十进制形式格式化数值(默认进制)。ios_base:oct 以八进制形式格式化数值。ios_base:hex 以十六进制形式格式化数值。ios_base:showbase 插入前缀符号以表明整数的数制。ios_base:showpoint 对浮点数值显示小数点和尾部的0。ios_base:uppercase 对于十六进制数值显示大写字母A到F,对于科学格式显示大写字母E
10、。ios_base:showpos 对于非负数显示正号(“+”)。ios_base:scientific 以科学格式显示浮点数值。ios_base:fixed 以定点格式显示浮点数值(没有指数部分)。ios_base:unitbuf 在每次插入之后转储并清除缓冲区内容。精度 浮点数输出精度的默认值是6,例如:3466.98。要改变精度:setprecision操纵符(定义在头文件iomanip中)。如果不指定fixed或scientific,精度值表示有效数字位数。如果设置了ios_base:fixed或ios_base:scientific精度值表示小数点之后的位数。例 11-4 控制输出精
11、度未指定 fixed 或 scientific/11_4_1.cpp#include#include#include using namespace std;int main()double values=1.23,35.36,653.7,4358.24;string names=Zoot,Jimmy,Al,Stan;for(int i=0;i4;i+)cout setiosflags(ios_base:left)setw(6)namesi resetiosflags(ios_base:left)/清除左对齐设置 setw(10)setprecision(1)valuesi endl;retu
12、rn 0;输出结果:Zoot 1 Jimmy 4e+001 Al 7e+002 Stan 4e+003 例 11-4 控制输出精度指定 fixed/11_4_2.cpp#include#include#include using namespace std;int main()double values=1.23,35.36,653.7,4358.24;string names=Zoot,Jimmy,Al,Stan;cout setiosflags(ios_base:fixed);for(int i=0;i4;i+)cout setiosflags(ios_base:left)setw(6)n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+语言程序设计进阶 9 C+ 语言程序设计 进阶
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内