欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > PPT文档下载
 

合工大计算机学院程序设计10第十章C的输入输出.ppt

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

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

合工大计算机学院程序设计10第十章C的输入输出.ppt

第十章 C+的输入输出,流 文件 文件流的使用:文件的输入和输出,10.1 流与文件一、流,C+语言提供了流用于读写文件。 接收输出数据的地方称为目标,发出输入数据的地方称为源。输入输出操作可以看作是字符序列在源、目标与对象之间的流动,因而将完成输入输出操作的类称为流类。 源流目标流 输入缓冲区(读) 输出缓冲区(写) 流的提取运算符 流的插入运算符<<,二、文件,一个文件必须有一个由用户命名的唯一名字,可用于存储程序和数据。 C+语言将文件看作是一个字符的序列,即由一个个字节的数据顺序组成流式文件 根据文件中数据的组织形式,文件分为: 文本文件:每一个字节存放的是一个ASCII码,表示一个字符,以字符为单位存储文件。 二进制文件:可以是任何类型的文件,以二进制位bit为单位存储文件。,10.2 文件的输入和输出,读写文件的过程: 往流中插入一个字符; 从流中提取一个字符; 一旦建立一个流,把它与文件相关联打开一个文件流,以便用来读和写。使用完后,需要关闭该文件流。,一、文件的打开和关闭1. C+的三种文件流,输入文件流:类 ifstream 输出文件流:类 ofstream 输入/输出文件流:类 fstream 三种文件流都位于 库 fstream。 例:#include void main( )/ 建立不同的文件流 ifstream in; /input file stream只能读 ofstream out; /output file stream只能写 fstream both; / I/O file stream ,2. 文件的打开与关闭方法一:使用函数open,一旦建立一个流,将它与文件相关联的一种方法是使用函数 open( ); ofstreamofile;/ 创建一个输出文件流 ofile.open( “text.txt” ) ; / 打开文件text.txt,使ofile流与该文件相关联 / 写文件text.txt ofile.close( ); / 关闭text.txt文件 ofile.open( “other.txt” ) ; /使ofile流与另一文件other.txt相关联:重用流 / 写文件other.txt ofile.close( ); / 关闭other.txt文件,方法二:通过流类的构造函数在创建流时直接与某文件相关联,ofstream ofile ( “text.txt” ); / 创建一个输出文件流ofile / 打开文件text.txt,使ofile流与该文件相关联 / 写文件text.txt ofile.close( ); / 关闭text.txt文件 流类的构造函数的参数和缺省值与open函数相同,用于在创建一个流时就使它与某个文件相关联,3. open函数的原型,P308open()的函数原型为: void open(const char* filename, int mode, int prot = filebuf:openprot); filename:文件名字,可含路径 mode:文件的打开模式 prot:文件的访问方式:普通、只读、隐藏、系统文件,与os相关,一般使用缺省值,文件打开模式mode,ios类中定义了模式的枚举类型open_mode p397 ifstream类中,open()的mode参数缺省值是ios:in ofstream类中,open()的mode参数缺省值是ios:out 缺省方式下,文件以文本方式打开,mode参数用位或运算|组合枚举常量 ofstreamofile; ofile.open( “test.bak”, ios:out|ios:binary ) ; / 以二进制形式打开当前目录下的test.bak文件,准备进行写操作 打开失败:重载!运算符 if ( ! ofile ) 警告打开文件失败; 退出程序; 继续正常的文件操作;,二、文件的读写,文本文件的读操作是从流中取一个字符 流的提取运算符 文本文件的写操作是向流中写一个字符 流的插入运算符<<,例1:将文件file_from拷贝到文件file_to中去,#include #include int CopyFile( char *file_from, char *file_to) / file_from: 输入文件名(源文件);file_to: 输出文件名(目标文件) char ch; /文件不存在则打开失败 ifstream from(file_from,ios:in|ios:nocreate);/以文本方式打开 if (!from) cout<<Cannot open <<file_from<< for input!n; return 0 ;/ 返回0表示复制文件不成功 ofstream to(file_to);/ 文件不存在则创建新文件 if (!to) cout<<Cannot open <<file_to<< for output!n; return 0 ; /从流from中读一个字符到ch中,成功的话则写入to,否则文 /件的每个字符都读完了 while (from.get(ch) to.put(ch); from.close();to.close();/ 关闭文件 return 1; / 返回1表示文件复制成功 ,例2:把一个整数、一个浮点数和一个字符串写到名为out.txt的文本文件中,#include int main( ) ofstream outfile; outfile.open(out.txt); if (!outfile) cout<<Cannot open out.txt for output!n; return 0 ;/ 返回0表示打开文件不成功 float f = 123.23;int n = 10; outfile<< n << << f << n; outfile<<This is a text file; outfile.close(); return 1; ,程序执行后,在当前目录下生成文件out.Txt,文件内容如下: 10 123.230003 This is a text file,例3:从例2程序建立的文件中读入相关数据,#include #include int main( ) ifstream infile; infile.open(out.txt); if (!infile) cout n f ch str; cout << n << << f << << ch << n; cout << str ; infile.close(); return 1; ,输出结果: 10 123.230003 T his,缺省情况下,运算符号跳过空白符号(如空格,回车),然后读入对应于输入对象类型的字符,例4:百钱买百鸡,#include #include void main() int i,j,k; char a28; ofstream ofile(d:myfile.txt);/打开文件 ofile<< 公鸡 母鸡 小鸡<<endl; for(i=0;i<=20;i+) for(j=0;j<=33;j+) k=100-i-j; if(5*i+3*j+k/3=100),ifstream ifile(d:myfile.txt); i=0; while(ifile.get(ai)/不可用,它不能读白字符 if(ai=n) break; i+; / 把文件中的第一行(到n)内容读入a字符数组 ai=0; / a加上结束符,成为完整的字符串 coutijk;/由文件读入 if(ifile.eof()!=0) break; cout<<setw(6)<<i<<setw(10)<<j<<setw(10)<<k<<endl;/屏幕显示 ifile.close(); ,myfile.txt,公鸡 母鸡 小鸡 0 25 75 4 18 78 8 11 81 12 4 84,例5,#include /包含 #include #include class inventory / 产品目录 char Description20; char No10; int Quantity; double Cost; double Retail; /零售价 public: inventory(char* =#,char* =0,int =0,double =0,double =0); void display(); Bdatatofile(ofstream,inventory:inventory(char *des,char *no,int quan,double cost,double ret) strcpy(Description,des); strcpy(No,no); Quantity=quan; Cost=cost; Retail=ret; void inventory:display() cout.setf(ios:left); cout<<setw(20)<<Description<<setw(10)<<No; cout.unsetf(ios:left);/要改为右对齐,先清左对齐 cout.setf(ios:right); cout<<setw(10)<<Quantity<<setw(10)<<Cost<<setw(10)<<Retail<<endl; ,inventory:Bdatatofile(ofstream /由此可见读和写是完全对称的过程,次序决不能错,void main() inventory car1(夏利2000,805637928,156,80000,105000),car2; inventory motor1(金城125,93612575,302,10000,13000),motor2; ofstream ddatafile(d:Ex9_10.data,ios:out|ios:binary); car1.Bdatatofile(ddatafile); motor1.Bdatatofile(ddatafile); cout<<对象car1:<<endl;car1.display(); cout<<对象motor1:<<endl;motor1.display(); cout<<对象car2:<<endl;car2.display(); cout<<对象motor2:<<endl;motor2.display(); ddatafile.close(); ifstream sdatafile(d:Ex9_10.data,ios:in|ios:binary);/重新打开文件,从头读取数据 car2.Bdatafromfile(sdatafile);/从文件读取数据拷贝到对象car2 if(sdatafile.eof()=0) cout<<读文件成功<<endl; cout<<对象car2:<<endl;car2.display(); motor2.Bdatafromfile(sdatafile);/继续从文件读取数据拷贝到对象motor2 if (sdatafile.eof()=0) cout<<读文件成功<<endl; cout<<对象motor2:<<endl;motor2.display(); sdatafile.close(); ,

注意事项

本文(合工大计算机学院程序设计10第十章C的输入输出.ppt)为本站会员(za****8)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

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




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!