C++简单读写文本文件_第1页
C++简单读写文本文件_第2页
C++简单读写文本文件_第3页
C++简单读写文本文件_第4页
C++简单读写文本文件_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+简单读写文本文件、统计文件的行数、读取文件数据到数fstream 提供了三个类,用来实现 c+对文件的操作。(文件的创建、读、写)。ifstream - 从已有的文件读ofstream -向文件写内容fstream -打开文件供读写文件打开模式:ios:inios:outios:app从文件末尾开始写ios:b inary二进制模式ios: nocreate打开一个文件时,如果文件不存在,不创建文件。ios: no replace打开一个文件时,如果文件不存在,创建该文件ios:tr unc打开一个文件,然后清空内容ios:ate打开一个文件时,将位置移动到文件尾文件指针位置在C+中的用法

2、:ios:beg文件头ios:e nd文件尾ios:cur当前位置例子:file.seekg(0,ios:beg);/让文件指针定位到文件开头file.seekg(10,ios:cur);/让文件指针从当前位置向文件末方向移动10个字节file.seekg(-10,ios:cur); /让文件指针从当前位置向文件开始方向移动10个字节file.seekg(10,ios:beg); /让文件指针定位到离文件开头10个字节的位置常用的错误判断方法:good()如果文件打开成功bad()打开文件时发生错误eof()到达文件尾实例:一、写入文件#in clude #i nclude using n a

3、mespace std;void mai n()ofstream in;in.open(com.txt,ios:trunc); /ios:trunc表示在打开文件前将文件清空,由于是写入,文件不存在则创建int i;char a=a;for(i=1;i=26;i+) 将26个数字及英文字母写入文件if(i10) in 0itan; a+;elsein itan; a+;in.close();关闭文件打开com.txt,效果如下:立件騎辑退)格式 查署苦 帮助01a02bD30d05e06f07908n09i10j11k12113n1t|n15016p17q18r19弓2t2Au22u29u2

4、itX25y26z、读取文件上面仅仅是将文本写入文件,并没有读取出来。以下为读取文件的一种方法:将文件每行内容存储到字符串中,再输出字符串#in elude #i nclude using n amespace std;void mai n()char buffer256;fstream out;out.ope n(com.txt,ios:i n);coutcom.txt 的内容如下:endl;while(!out.eof()out.getline(buffer,256,n);/getline(char *,int,char)表示该行字符达到256 个或遇到换行就结束coutbuffere n

5、dl;out.close();cin .get();/ci n. get()是用来读取回车键的,如果没这一行,输出的结果一闪就消失了逐个字符的读取文件:#in clude #i nclude using n amespace std;void mai n()fstream in;char c;in. ope n(co mn. txt,ios:i n); while(!i n.eof()in c;coutc;in .close();cin .get();这个方法读取的文件,所有字符都一起显示,不会分行。这里字母z显示两次,是正常的,因为在输出文件最后一个字母z之后,又输出了一次(可以仔细考虑程序

6、代码)。读取文件某一行内容:#in elude #i nclude #in elude using n amespace std;int CountLin es(char *file name)ifstream ReadFile;int n=0;stri ng tmp;ReadFile.ope n( file name,ios:i n);/ios:i n表示以只读的方式读取文件if(ReadFile.fail()文件打开失败:返回0return 0;else/文件存在while(getl in e(ReadFile,tmp)n+;return n;ReadFile.close();string

7、 ReadLine(char *filename,int line)in t li nes,i=0;string temp;fstream file;file.ope n( file name,ios:i n);lin es=Co untLin es(file name);if(li neli nes)return Error 3:行数超出文件长度。 while(getli ne(file,temp )&i li ne-1)i+;file.close();return temp;void mai n()in t l;char file name256;cout 请输入文件名: file nam

8、e;:e ndl;cout 1;coutReadL in e(file name,l);cin .get();cin .get();很显然,根据以上程序,利用循环,可以逐行读取整个文件内容。三、统计文件的行数#in elude #i nclude using n amespace std;int CountLin es(char *file name)ifstream ReadFile;int n=0;char lin e512;ReadFile.ope n( file name,ios:i n);/ios:i n表示以只读的方式读取文件if(ReadFile.fail() 文件打开失败:返回

9、0return 0;else/文件存在while(!ReadFile.eof()ReadFile.getli ne(li ne,512,n);n+;return n;ReadFile.close();void mai n()coutcomn.txt 的行数为:CountLines(comn.txt)endl;cin .get();原因以上程序的设计思路没有问题,但在实际操作的时候会发现统计出的行数与实际不符,自动加1.如果换行符在新的一行, 返回的结果会比实际多 1;如果不在新的一行, 返回结果与实际相符。可以修改如下:#in elude #i nclude #in elude using n

10、 amespace std;int CountLin es(char *file name)ifstream ReadFile;int n=0;char lin e512;string temp;ReadFile.ope n( file name,ios:i n);/ios:i n表示以只读的方式读取文件if(ReadFile.fail()文件打开失败:返回0return 0;else/文件存在while(getli ne(ReadFile,temp)n+;return n;ReadFile.close();void mai n()coutcomn.txt的行数为:CountLines(com

11、n.txt)endl;cin .get();四、读取文件数据到数组#in clude #i nclude #in clude using n amespace std;int Cou ntLi nes(char *file name)/获取文件的行数ifstream ReadFile;int n=0;string temp;ReadFile.ope n( file name,ios:i n);/ios:i n表示以只读的方式读取文件if(ReadFile.fail()/ 文件打开失败:返回0return 0;else/文件存在,返回文件行数while(getli ne(ReadFile,temp)n+;return n;ReadFile.close();void mai n()ifstream file;int LINES;char file name512;:e ndl;cout file name;file.ope n(file name,ios:i n);cout文件不存在.endl;file.close();cin .get();cin .get();else/文件存在LINES=Cou ntLi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论