




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十章 C+的输入输出 流 文件 文件流的使用:文件的输入和输出 10.1 流与文件 一、流 nC+语言提供了流用于读写文件。 n接收输出数据的地方称为目标,发出输 入数据的地方称为源。输入输出操作 可以看作是字符序列在源、目标与对象 之间的流动,因而将完成输入输出操 作的类称为流类。 源流目标流 输入缓冲区(读) 输出缓冲区(写) 流的提取运算符 流的插入运算符 n例:#include void main( )/ 建立不同的文件流 ifstream in; /input file stream只能读 ofstream out; /output file stream只能写 fstream both; / I/O file stream 2. 文件的打开与关闭 方法一:使用函数open n一旦建立一个流,将它与文件相关联的一种方法 是使用函数 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函数的原型 nP308open()的函数原型为: void open(const char* filename, int mode, int prot = filebuf:openprot); nfilename:文件名字,可含路径 nmode:文件的打开模式 nprot:文件的访问方式:普通、只读、隐藏、系 统文件,与os相关,一般使用缺省值 文件打开模式mode nios类中定义了模式的枚举类型open_mode p397 nifstream类中,open()的mode参数缺省值是 ios:in nofstream类中,open()的mode参数缺省值是 ios:out n缺省方式下,文件以文本方式打开 nmode参数用位或运算|组合枚举常量 ofstreamofile; ofile.open( “test.bak”, ios:out|ios:binary ) ; / 以二进制形式打开当前目录下的test.bak文件,准 备进行写操作 n打开失败:重载!运算符 if ( ! ofile ) 警告打开文件失败; 退出程序; 继续正常的文件操作; 二、文件的读写 n文本文件的读操作是从流中取一个字符 流的提取运算符 n文本文件的写操作是向流中写一个字符 流的插入运算符 #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 int main( ) ofstream outfile; outfile.open(“out.txt“); if (!outfile) cout #include int main( ) ifstream infile; infile.open(“out.txt“); if (!infile) cout n f ch str; cout 运算符号跳过空白符 号(如空格,回车),然后读入对应于 输入对象类型的字符 例4:百 钱买百 鸡 #include #include void main() int i,j,k; char a28; ofstream ofile(“d:myfile.txt“);/打开文件 ofile,它不能读白字符 if(ai=n) break; i+; / 把文件中的第一行(到n)内容读入a字符数组 ai=0; / a加上结束符,成为完整的字符串 coutijk;/由文件读入 if(ifile.eof()!=0) break; cout /包含 #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/这里直接用文件流类 Bdatafromfile(ifstream ; 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); coutsetw(20)Descriptionsetw(10)No; cout.unsetf(ios:left);/要改为右对齐,先清左对齐 cout.setf(ios:right); coutsetw(10)Quantitysetw(10)Costse tw(10)Retailendl; inventory:Bdatatofile(ofstream dist.write(No,10); dist.write(char*) dist.write(char*) dist.write(char*) inventory:Bdatafromfile(ifstream sour.read(No,10); sour.read(char*) sour.read(char*) sour.read(char*) /由此可见读和写是完全对称的过程,次序决不能错 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“对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025聘请家政服务员合同书范本
- 2025综合商品质押合同范本简易模板
- 2025贵州省二手房买卖合同范本
- 彩盒打样合同范本
- 房屋装修私人合同范本
- 公路硬化合同范本
- 正式转让门面合同范本
- 酒店买卖合同范本
- 国有单位售房合同范本
- 婚庆拍摄公司合同范本
- 2025广东广州市从化区社区专职人员招聘33人笔试参考题库附答案解析
- 2025年内河船员考试(主推进动力装置2103·一类三管轮)历年参考题库含答案详解(5套)
- 感染性腹主动脉瘤护理
- 公司不交社保合作协议书
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 松下panasonic-视觉说明书pv200培训
- 金风科技-风电产业集团-供应商现场作业基础安全考试附答案
- 中考语文二轮专题复习:议论文阅读(共27张PPT)
- 建设工地每日消杀记录表
- 建筑施工应急处置明白卡
- 环境污染刑事案件司法解释学习课件
评论
0/150
提交评论