第12章流类的体系与文件操作-课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第12章流类的体系与文件操作-课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 12 章流类 体系 文件 操作 课件
- 资源描述:
-
1、第12章 流类体系与文件操作目的与要求12.1 流类体系12.2 文件操作本章小结目的与要求 通过本章学习,应理解I/O流、流类与流类体系的概念,掌握流的输入/输出控制格式。了解C+有关文件的概念及文件的使用方法,理解文件流类体系结构,掌握实现文件操作成员函数的使用方法,学会文本文件与二进制文件的打开、读/写、关闭等操作的编程方法。12.1 流类体系 12.1.1 流(Stream)1流类:用于完成输入/输出操作的类称为流类,所有流类的集合称为流类库。2流:用流类定义的对象称为流,如cin、cout等。3流的分类(1)文本流:由一串ASCII字符组成(2)二进制流:是由一串二进制数组成4缓冲流
2、与非缓冲流 系统在主存中开辟的用于临时存放输入/输出流信息的内存区称缓冲区 12.1.2 基本流类体系 基类iosstreambuf输入类istream输出类ostream输入/输出类iostream基本流类体系类ostream_withassign类istream_withassign当程序中使用输入/输出流时,要包含头文件iostream.h。12.1.3 标准输入输出流 1标准输入流cin(缓冲流)标准输入流cin通过重载“”运算符执行数据的输入操作,执行输入操作可看作为从流中提取一个字符序列。cin 为缓冲流。2标准输出流cout、clog(缓冲流)、cerr(非缓冲流)标准输出流co
3、ut、cerr、clog是通过重载“”运算符执行数据的输出操作,执行输出操作看作为向流中插入一个字符序列。cout、clog为缓冲流、cerr为非缓冲流。【例12.1】使用流cerr和clog实现数据的输出。例程例程3标准输出流默认设置(1)整数:十进制、域宽为0、右对齐、以空格填充。(2)实数:十进制、域宽为0、右对齐、以空格填充、精度6位小数、浮点输出。(3)字符串:域宽为0、右对齐、以空格填充。按实际字符串长度输出。12.1.4 流的格式控制 C+提供了格式控制成员函数与预定义格式控制函数供用户控制数据的输入/输出格式。(1)格式控制成员函数 ios类定义的格式控制成员函数的调用格式为:
4、(实参);(2)预定义格式控制函数 C+直接提供的预定义格式控制函数的调用格式为:(实参);1流的输出控制格式 使用流对象cout与插入运算符“”运算符来实现的。输入数据时,要注意数据间的分隔符、数据类型的一致和回车的使用。【例12.7】使用预定义格式控制符dec、oct、hex及输入流对象cin 输入十进制数、八进制数、十六进制数。例程例程12.1.5数据输入输出成员函数 1数据输入成员函数(1)字符输入成员函数:get()(2)字符串输入成员函数:getline()【例12.8】读取字符和字符串。2数据输出成员函数 字符输出成员函数:put()例程例程12.2 文件操作 12.2.1 C+
5、文件概述1文件(1)文件:由文件名标识的一组有序数据的集合称为文件。文件常放在磁盘上。(2)文件名:由字母数字序列组成。如:myfile.txt,youfile.txt。2文件的数据格式(1)二进制文件:由二进制数据组成(2)文本文件:由字符的ASCII码组成,最小存取单位为字符。3文件的使用方法 (1)打开文件;(2)对文件进行读/写操作;(3)关闭文件。12.2.2 C+的文件流类体系 基类iosstreambuf输入类istream输出类ostream输入/输出类iostream C+预定义的文件流类体系filebuf输出文件类ofstream输入文件类ifstream输入/输出文件类f
6、stream当程序中使用文件时,要包含头文件fstream.h。12.2.3 文件的使用方法 1定义文件流对象(1)读文件流对象定义格式:ifstream;例如:ifstream infile;/infile为读文件流对象(2)写文件流对象定义格式:ofstream;例如:ofstream outfile;/outfile为写文件流对象(3)读/写文件流对象定义格式:fstream;例如:fstream iofile;/iofile为读/写文件流对象 2打开文件(1)使用成员函数open()打开文件打开文件的格式为:文件流对象.open(“文件名”,ios:moda);文件打开方式:moda=
7、in、out、app、nocreate、noreplace、binary。例如:infile.open(myfile.txt,ios:in);或 infile.open(myfile.txt);outfile.open(youfile.txt,ios:out);或 outfile.open(youfile.txt);(2)定义文件流对象时通过构造函数打开文件在定义文件流对象时直接调用构造函数打开文件。例如:ifstream infile(myfile.txt,ios:in);或 ifstream infile(myfile.txt);ofstream outfile(“youfile.txt”
8、,ios:out);或 ofstream outfile(youfile.txt);(3)判断文件打开成功 无论是调用成员函数open()来打开文件,还是用构造函数来打开文件,在打开后,都要判断打开是否成功。若文件打开成功,则文件流对象值为非零值;若打开不成功,则其值为0。例如:按只读方式打开文件myfile.txt的一般过程为:ifstream infile(myfile.txt);if (!infile)cout不能打开的文件:myfile.txtendl;exit(1);判断文件打开成功或char filename256;coutfilename;ifstream infile;infi
9、le.open(filename);if(!infile)cout不能打开的文件:filename”或插入运算符“ch;/从输入流infile所关联的文件myfile.txt中 /提取一个字符赋于变量ch outfile”和插入运算符“”将源程序文件拷贝到目的文件中。例程例程例程例程文本文件的使用 【例12.11】用输入输出文件类fstream定义文件流对象,用文件流对象的成员函数打开文件。使用成员函数getline与插入运算符“”、插入运算符“”与插入运算符“ch)outfilech;用成员函数get()、getline()与put()对文件读写。例如:char ch,buff500;whi
10、le(infile.get(ch)outfile.put(ch);while(infile.getline(buff,500)outfilebuff;(4)关闭文件 用成员函数close关闭文件,例如:infile.close();outfile.close();关闭文件时,系统将与该文件相关联的内存缓冲区中的数据写到文件中,收回与该文件相关的主存空间,将文件名与文件对象之间建立的关联断开。5二进制文件的使用 二进制文件的使用与文本文件的使用类似,首先要定义文件流对象,然后用open函数打开文件,打开方式必须使用ios:binary。读/写文件时要使用读函数read()与写函数write(),
11、并可用定位函数seekg与seekp移动文件指针,随机读/写文件中任一字节单元的内容。文件使用完毕后,要用close函数关闭文件。例12.1#include void main(void)cerra;clog”a*a=”a*aendl;返回返回例12.2#include void main()float a=11,22.2,33.33,44.444,55.5555;for(int i=0;i5;i+)cout.width(10);/设置输出域宽为10 coutain;返回返回例12.3#include#include void main(void)char*name=Zhou,Zhao,Liu
12、,Chen,Li;double score=11,22.2,33.33,44.444,55.5555;for(int i=0;i5;i+)coutsetw(6)nameisetw(10)scorein;返回返回例12.4#include#include void main(void)char*name=Zhou,Zhao,Liu,Chen,Li;double score=11,22.2,33.33,44.444,55.5555;for(int i=0;i5;i+)coutsetiosflags(ios:left)setw(6)namei/设置输出姓名左对齐、域宽为6 resetiosflags
13、(ios:left)/取消输出左对齐 setiosflags(ios:right|ios:scientific)/设置右对齐、科学记数法 setw(10)scorein;/设置输出域宽为10 返回返回例12.5#include#include void main(void)char*name=Zhou,Zhao,Liu,Chen,Li;double score=11,22.2,33.33,44.444,55.5555;for(int i=0;i5;i+)coutsetiosflags(ios:left)setw(6)namei resetiosflags(ios:left)setiosflag
14、s(ios:fixed)/先设置定点方式 setprecision(1)scorein;/再设置小数点后一位有效数字 返回返回例12.6#include#include main()int x=64;coutsetiosflags(ios:oct)xtresetiosflags(ios:oct)setiosflags(ios:hex)xtresetiosflags(ios:hex)setiosflags(ios:dec)xendl;coutoctxthexxtdecxendl;返回返回例12.7#include void main(void)int a,b,c;coutdeca;coutoct
15、b;couthexc;couta=decaendl;coutb=decbendl;coutc=deccendl;返回返回例12.8(1)#include void main(void)char c1,c2,c3;char str180,str2100;cout输入三个字符:;c1=cin.get();cin.get(c2);cin.get(c3);cin.get();/A cout输入第一行字符串:;cin.get(str1,80);cin.get();/B例12.8(2)cout输入第二行字符串:;cin.getline(str2,100);coutc1=c1endl;coutc2=c2en
16、dl;coutc3=c3endl;coutstr1=str1endl;coutstr2=str2endl;返回返回例12.9(1)#include#include#include void main(void)char fname1256,fname2256;coutfname1;coutfname2;ifstream infile;infile.open(fname1);ofstream outfile;outfile.open(fname2);例12.9(2)if(!infile)cout不能打开输入文件:fname1endl;exit(1);if(!outfile)cout不能打开目的文
17、件:fname2endl;exit(1);infile.unsetf(ios:skipws);/设置为不要跳过文件中的空格。char ch;while(infile.get(ch)/从源文件中提取一个字符到变量ch中;outfile.put(ch);/将ch中的字符写入目的文件中。infile.close();/关闭源文件 outfile.close();/关闭目的文件返回返回例12.10(1)#include#include#include void main(void)char fname1256,fname2256;coutfname1;coutfname2;ifstream infil
展开阅读全文