1、c+文件读取掌握文本文件读写的方法了解二进制文件的读写方法C+文件流:fstream/ 文件流ifstream / 输入文件流ofstream / 输出文件流/创建一个文本文件并写入信息/同向屏幕上输出信息一样将信息输出至文件#include#includevoid main()ofstream f1(d:me.txt);/打开文件用于写,若文件不存在就创建它if(!f1)return;/打开文件失败则结束运行f1setw(20)姓名:廉东方endl; /使用插入运算符写文件内容f1setw(20)家庭地址:河南郑州endl;f1.close(); /关闭文件运行后打开文件d:me.txt,其
2、内容如下:姓名:廉东方家庭地址:河南郑州文件操作:打开文件文件名注意路径名中的斜杠要双写,如:D:MyFilesReadMe.txt文件打开方式选项:ios:in= 0x01,/供读,文件不存在则创建(ifstream默认的打开方式)ios:out = 0x02,/供写,文件不存在则创建,若文件已存在则清空原内容(ofstream默认的打开方式)ios:ate = 0x04,/文件打开时,指针在文件最后。可改变指针的位置,常和in、out联合使用ios:app = 0x08,/供写,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,指针位置总在最后ios:trunc = 0x10,/
3、在读写前先将文件长度截断为0(默认)ios:nocreate= 0x20,/文件不存在时产生错误,常和in或app联合使用ios:noreplace = 0x40,/文件存在时产生错误,常和out联合使用ios:binary= 0x80 /二进制格式文件文件保护方式选择项:filebuf:openprot;/默认的兼容共享方式filebuf:sh_none; /独占,不共享filebuf:sh_read; /读共享filebuf:sh_write;/写共享打开文件的方法调用构造函数时指定文件名和打开模式ifstream f(d:12.txt,ios:nocreate); /默认以 ios:in
4、 的方式打开文件,文件不存在时操作失败ofstream f(d:12.txt); /默认以 ios:out的方式打开文件fstreamf(d:12.dat,ios:in|ios:out|ios:binary);/以读写方式打开二进制文件使用Open成员函数fstream f;f.open(d:12.txt,ios:out);/利用同一对象对多个文件进行操作时要用到open函数检查是否成功打开成功:if(f)./对ifstream、ofstream对象可用,fstream对象不可用。if(f.good().失败:if(!f). / !运算符已经重载if(f.fail().读写操作使用运算符只能进
5、行文本文件的读写操作,用于二进制文件可能会产生错误。使用函数成员 get、put、read、write等经常和read配合使用的函数是gcount(),用来获得实际读取的字节数。读写二进制文件注意事项打开方式中必须指定ios:binary,否则读写会出错用readwrite进行读写操作,而不能使用插入、提取运算符进行操作,否则会出错。使用eof()函数检测文件是否读结束,使用gcount()获得实际读取的字节数关闭文件使用成员函数close,如:f.close();利用析构函数对象生命期结束时会检查文件是否关闭,对没有关闭的文件进行关闭操作。随机读写文件通过移动文件读写指针,可在文件指定位置进
6、行读写。seekg(绝对位置);/绝对移动,/输入流操作seekg(相对位置,参照位置); /相对操作tellg();/返回当前指针位置seekp(绝对位置);/绝对移动,/输出流操作seekp(相对位置,参照位置); /相对操作tellp();/返回当前指针位置参照位置:ios:beg= 0 /相对于文件头ios:cur= 1 /相对于当前位置ios:end= 2 /相对于文件尾读写文本文件的示例/为能够正确读出写入文件的各数据,各数据间最好要有分隔#includevoid main()fstream f(d:try.txt,ios:out);f1234 3.14Aidc; /读取数据f.g
7、etline(s,20);coutiendl;/显示各数据coutdendl;coutcendl;coutsendl;f.close();运行结果:12343.14AHow are youPress any key to continue显示文本文件的内容/使用get()一次读一个字符-方案一#includevoid main()ifstream fin(d:简介.txt,ios:nocreate);if(!fin)coutFile open error!n;return;char c;while(c=fin.get()!=EOF)coutc; /注意结束条件的判断fin.close();/使
8、用get(char *,int n,char delim=n)一次读多个字符-方案二/巧妙利用文本文件中不会有字符0的特点进行读取#includevoid main()ifstream fin(d:简介.txt,ios:nocreate);if(!fin)coutFile open error!n;return;char c80;while(fin.get(c,80,0)!=NULL)coutc; /注意结束条件的判断fin.close();/使用read(char *,int n)读文件-方案三#includevoid main()ifstream fin(d:简介.txt,ios:nocr
9、eate);if(!fin)coutFile open error!n;return;char c80;while(!fin.eof() /判断文件是否读结束fin.read(c,80);cout.write(c,fin.gcount(); fin.close();拷贝文件/二进制文件操作示例#includevoid main()ifstream fin(C:1.exe,ios:nocreate|ios:binary);if(!fin)coutFile open error!n;return;ofstream fout(C:2.exe,ios:binary);char c1024;while(
10、!fin.eof()fin.read(c,1024);fout.write(c,fin.gcount();fin.close();fout.close();coutCopy over!n;C+中Txt文件读取和写入 笔记:C+文件的读取和写入 #include #include #include using namespace std; int main() char buffer256; ifstream myfile (c:a.txt); ofstream outfile(c:b.txt); if(!myfile) cout Unable to open myfile; exit(1);
11、/ terminate with error if(!outfile) cout Unable to open otfile; exit(1); / terminate with error int a,b; int i=0,j=0; int data62; while (! myfile.eof() ) myfile.getline (buffer,10); sscanf(buffer,%d %d,&a,&b); couta bendl; datai0=a; datai1=b; i+; myfile.close(); for(int k=0;ki;k+) outfiledatak0 datak1endl; coutdatak0 datak1endl; 第 1 頁,共 4 頁C+中Txt文件读取和写入2011/9/9mhtml:file:/C:Documents%20and%20Setti
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1