若是程序的运行结果仅仅显示在屏幕上,当要再次查看结果时,必须将程序从新运行一遍;并且,这个结果也不能被保留。
若是但愿程序的运行结果可以永久保留下来,供随时查阅或取用,则须要将其保存在文件中。ios
外部文件和内部文件数组
文本文件和二进制文件函数
本节只讨论文本文件的使用方法和操做过程及其简单应用。
使用文本文件的过程是固定的,通常步骤以下: spa
(1) 打开一个文件,使磁盘文件和文件流对象创建联系; code
(2) 将数据按文本方式写入一个文件,就如同cout用于向显示器送数据。之后可从这个文件读取数据,就如同cin用于键盘输入。 对象
(3) 当再也不使用文件时,要关闭文件,此时文件将从缓冲区中彻底写回磁盘。这样,能够永久保存数据。blog
1.说明一个文件流对象(内部文件)。 ip
例如: ifstream ifile; //说明输入文件流对象ifile ci
ofstream ofile; //说明输出文件流对象ofile
说明:字符串
2.打开文件,在文件流对象和磁盘文件之间创建联系。
例如: ifile.open( "d:\\my_in_file.txt" );
ofile.open( "d:\\my_out_file.txt" );
说明:
3.对文件进行读写操做。
4.关闭文件。
文件操做结束后,应该显式地关闭该文件,与打开文件相对应,例如:
ifile.close();
ofile.close();
关闭文件时,系统把与该文件相关联的文件缓冲区中的数据写到磁盘文件中,保证文件的完整;同时把磁盘文件名与文件流对象之间的关联断开,可防止误操做修改了磁盘文件。
【例2.25】将百鸡问题计算结果存入文件。
1 #include<fstream> 2 #include<iomanip> 3 using namespace std; 4 int main(){ 5 int i,j,k; 6 ofstream ofile; //定义输出文件 7 ofile.open("d:\\myfile.txt"); //做为输出文件打开 8 ofile<<" 公鸡 母鸡 小鸡"<<endl; //标题写入文件 9 for(i=0;i<=20;i++) 10 for(j=0;j<=33;j++){ 11 k=100-i-j; 12 if((5*i+3*j+k/3==100)&&(k%3==0)) //注意(k%3==0)很是重要 13 ofile<<setw(6)<<i<<setw(10)<<j<<setw(10)<<k<<endl; //数据写入文件 14 } 15 ofile.close(); //关闭文件 16 return 0; 17 }
【例2.26】读出存放百鸡问题计算结果的文件
1 #include<fstream> 2 #include<iostream> 3 #include<iomanip> 4 using namespace std; 5 int main(){ 6 char a[28]; 7 ifstream ifile; //定义输入文件 8 ifile.open("d:\\myfile.txt"); //做为输入文件打开 9 int i=0,j,k; 10 while(ifile.get(a[i])){ //读标题,请对比cin.get(),不可用>>,它不能读白字符 11 if(a[i]=='\n') break; 12 i++; 13 } 14 a[i]='\0'; 15 cout<<a<<endl; 16 while(1){ 17 ifile>>i>>j>>k; //由文件读入数据 18 if(ifile.eof()!=0) break; //当读到文件结束时,ifile.eof()为真 19 cout<<setw(6)<<i<<setw(10)<<j<<setw(10)<<k<<endl; //屏幕显示 20 } 21 ifile.close(); //关闭文件 22 return 0; 23 }
重要提示
ifstream ifile( "d:\\my_in_file.txt" ); //说明输入文件流对象ifile并打开文件
ofstream ofile( "d:\\my_out_file.txt" );//说明输出文件流对象ofile并打开文件