已阅读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年考研计算机专业数据结构冲刺押题试卷(含答案)
- 演出化妆要求合同范本
- 人教版八年级美术下册教学设计:漂亮的手工灯饰
- 食堂合同到期终止协议
- 酒店加盟协议合同范本
- 美学顾问薪资合同范本
- Unit 4 School things Period 3(教学设计)-2024-2025学年新启航英语一年级上册
- 设备质量问合同协议书
- 【二年级】2025秋季期中家长会:让每一颗小小的种子【课件】
- 七年级上期中家长会《家校携手共前行一路向阳待花开》课件
- 2025年湖北水发集团招聘笔试参考题库含答案解析
- 6人小品《没有学习的人不伤心》台词完整版
- 电影院影城保洁服务方案
- T-SZSACA 2-2021 无障碍城市(城区)评价标准
- GB/T 33248-2016印刷技术胶印橡皮布
- 6-马工程《艺术学概论》课件-第六章【已添加内容】.课件电子教案
- 共聚焦显微镜zeisslsm700使用说明-中文版lsm
- 2023艾滋病、性与健康智慧树期末考试90分
- 光刻技术课件
评论
0/150
提交评论