欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第14章文件流和内存流.ppt

    • 资源ID:5891782       资源大小:271.54KB        全文页数:39页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第14章文件流和内存流.ppt

    第14章 文件流和内存流,14.1 文件及文件流的基本概念文件:程序+数据+文档,外部设备的总称(aaa.c null prn con)14.1.1 输入和输出内存向外存:输出、写、存外存向内存:输入、读、取 14.1.2 文件的存储方式ASCII码:1024=49 48 50 52=0100 1001 0100 1000 0101 0000 0101 0010 二进制存储方式:1024=0000 0100 0000 0000文件流:专门用于磁盘文件I/O的流类(专门用于磁盘文件I/O的类)。,14.1.3 文件流类体系类filebuf用于管理文件的缓冲区。类fstreambase提供了I/O所需要的所有成员函数。类ifstream用于从文件中取(i)数据。类ofstream用于向文件输出(o)数据。类fstream用于文件的双向数据传递I/O)。以上类的派生(产生)方法参看305页。,14.2 文件的打开与关闭14.2.1 文件的打开C+在文件流类中提供了4个文件的成员函数:void fstreambase:open(char*,int,int=filebuf:openprot)void ifstream:open(char*,int=ios:in,int)void ofstream:open(char*,int=ios:out,int)void fstream:open(char*,int,int),说明:第一个参数是文件名,第二个参数是访问方式,第三个参数是保护方式。在所有文件流的基类ios中,可以使用下列打开模式的公有枚举成员:in 0 x01 输入 out 0 x02 输出 ate 0 x04 将指针置于文件未 app 0 x08 追加 binary 0 x80 打开二进制文件 一般情况,将几种模式组合使用。更多的成员参考306页。,例:打开一个文件result文件 ifstream infile;infile.open(“result”);等价于:infile.open(“result”,ios:in);/打开输入文件 infile.open(“result”,ios:in|ios:binary);/打开二进制输入文件,说明:对于类ifstream的对象,打开文件时默认模式in。对于类ofstream的对象,打开文件时默认模式out。C+在文件类中提供的4个文件流类中同时重载一个带缺省参数的构造函数:void fstreambase:fstreambase(char*,int,int=filebuf:openprot)void ifstream:ifstream(char*,int=ios:out,int)void ofstream:ofstream(char*,int=ios:in,int)void fstream:fstream(char*,int,int)定义对象时,同时也打开了一个文件。,4.若文件打开出错,则返回一个NULL值。因此常常用下列格式提示出错:ifstream infile;infile.open(“result”);if(!infile)cour(“cannot open this file”);exit(1);其中,exit(1)为返回编辑状态,1可省。,14.2.2 文件的关闭ifstream infile;infile.open(“result”);if(!infile)cour(“cannot open this file”);exit(1);infile.close();,14.3 文件的读写使用两个读写运算符:例14-1:模拟DOS命令,将*.cpp 再复制一份,新文件名为:*new.cpp算法:打开输入文件 打开输入/输出文件 文件复制 文件关闭,方法一:#include fstream.h#include iostream.h#include stdlib.hvoid main(int argc,char*argv)if(argc!=3)coutinput errorendl;exit(1);,ifstream infile(argv1);/定义对象并初始化,打开模式省 if(!infile)coutch)outfilech;infile.close();outfile.close();,方法二:#include fstream.h#include iostream.h#include stdlib.hvoid main(int argc,char*argv)if(argc!=3)cerrinput error;exit(1);fstream infile,outfile;/先定义文件类对象 infile.open(argv1,ios:in);/不是构造函数,不能省略模式 outfile.open(argv2,ios:out);,if(!infile|!outfile)cerrCont open file endl;exit(1);char ch;while(infile.get(ch)outfile.put(ch);infile.close();outfile.close();,14.5 文件读写函数14.5.1 二进制文件读写函数istream说明:第一个参数为内容,第二个参数为读写的字节数。,例14-2:用二进制读写函数完成文本文件的复制#include#include stdlib.hvoid main(int argc,char*argv)if(argc!=3)cerrinput error;exit(1);fstream infile,outfile;infile.open(argv1,ios:in|ios:binary);outfile.open(argv2,ios:out|ios:binary);,if(!infile|!outfile)/文件打开有错,对象为0 cerrCont open file endl;exit(1);char ch1024;do infile.read(ch,1024);if(infile.eof()/文件结束为真 int n=infile.gcount();/把最后不够1024字节时的字节取出 outfile.write(ch,n);break;,else outfile.write(ch,1024);while(1);infile.close();outfile.close();,例14-3:用二进制读写函数完成数据文件的写(p318)生成10个数,进行排序,然后保存到文件中#include#include“stdlib.h”#include#include#include“ex14_5.h”/见P314中,void main()int savedate(int*,int,char*);int*iarray;iarray=Generatedatas(10);/生成10个随机数 if(!iarray)/不成功时iarray为0 cerr”memory allocation error,press any key to exit n”;getch();/按任意键返回 exit(1);,sortdata(iarry,10);/排序,函数子程序见p315 savedata(iarray,10,”datas1.dat”);/保存排序后的数据 releasememory(iarray);/用后释放 int savedata(int*ip,int n,char*fname)ofstream of;of.open(fname,ios:out|ios:binary);if(!of)cerr”file creating eror!”endl;return 0;of.write(char*)ip,n*sizeof(int);/对数据指针强制转换成字符指针,按字节数写入对象建立的文件 of.close();return 1;,int*Generatedate(int n)/因为返回的是指针,因此函数也是指针函数int*ip;ip=new intn;if(!ip)return 0;randomize();/要使用头文件stdlib.hfor(i=0;in;i+)ipi=rand()%1000;return ip;void ReleasMemory(int*ip)delete ip;,例14-4:用二进制读写函数完成数据文件的读#include#include void main()int loaddata(int*,char*);void showdata(int*,int);int iarray10,i;i=loaddata(iarray,”data1.dat”);/从文件中读数据到数组 showdata(iarray,i);/将读出的数据显示,int loaddata(int*ip,char*fname);ifstream ifs;int i=0;ifs.open(fname,ios:in+ios:binary);if(!ifs)cerr”file opening error!”endl;return 0;,while(1)ifs.read((char*)ip,sizeof(int);/每次读两个字节且强制转换 if(ifs.eof()break;ip+;i+;/统计数据个数return i;,void showdata(int*ip,int n)for(int i=0;in;i+)coutipi”“;coutendl;说明:以上函数使用了数组和指针之间的相互传递。,14.5.2 文本文件读写例14-5:编写,将任意程序中的标识符取出显示的函数程序#include#include“ctype.h”void Getident(ifstream infile,char*s)/对象和存放标识符指针 char ch;infilech;/读第一个字符 if(isalpha(ch)|ch=_)/用头文件“ctype.h”do/isalpta(ch)是字母为真,*s+=ch;infile.get(ch);/取下一个字符 while(isalnum(ch)|ch=_);/字母、数字或下划线循环*s=0;/置串结束标记 infile.putback(ch);/返还最后一次多读的字符,例14-6:计算10以内的自然数的平方根,且保存到文件data.txt中#include#include fstream.h#include stdlib.h#include math.hvoid main()ofstream outfile;outfile.open(data.txt,ios:out);if(!outfile)coutCont open file endl;exit(1);,for(int k=1;k11;k+)outfilektsqrt(k)endl;coutktsqrt(k)endl;outfile.close();,例14-7:将以上数据文件取出显示方法1:#include#include fstream.h#include stdlib.h#include math.hvoid main()int a;float b;ifstream infile;,infile.open(data.txt,ios:in);if(!infile)coutab;coutatbendl;infile.close();,方法2:#include#include fstream.h#include stdlib.hvoid main()int a;float b;int k=0;ifstream infile;infile.open(data.txt,ios:in);if(!infile)coutCont open file endl;exit(1);,while(1)infileab;coutatbendl;k+;if(infile.eof()break;infile.close();,方法3:#include#include fstream.h#include stdlib.hvoid main()int a;float b;int k=0;ifstream infile;infile.open(data.txt,ios:in);,if(!infile)coutab;coutatbendl;k+;infile.close();,例14-8:建立一个数据文件,有姓名,三门课程成绩,利用该文件求每人平均成绩将以上数据文件取出求平均且显示#include#include fstream.h#include stdlib.hvoid main()int a,b,c;char name10;ifstream infile;infile.open(num.txt,ios:in);,if(!infile)coutnameabc;coutnametatbt(a+b+c)/3endl;if(infile.eof()break;infile.close();,例14-9:将从键盘上输入的10个数据存入文件#include fstream.hvoid main()int k,n;ofstream outfile;outfile.open(data.txt,ios:out);if(!outfile)cerr n;outfilen”;outfile.close();,总结:二进制读写方式适用于什么情况?ASCII码读写方式适用于什么情况?管理文件包括:复制、连接、修改、替换、删除、提取、插入、查找、统计、显示、加密、粘贴板、回收站、保存、输入、记忆输入。,

    注意事项

    本文(第14章文件流和内存流.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开