如果程序的運(yùn)行結(jié)果僅僅顯示在屏幕上,當(dāng)要再次查看結(jié)果時(shí),必須將程序重新運(yùn)行一遍;而且,這個(gè)結(jié)果也不能被保留。 文件分類外部文件和內(nèi)部文件
文本文件和二進(jìn)制文件
使用過程本節(jié)只討論文本文件的使用方法和操作過程及其簡單應(yīng)用。 (1) 打開一個(gè)文件,使磁盤文件和文件流對象建立聯(lián)系; (2) 將數(shù)據(jù)按文本方式寫入一個(gè)文件,就如同cout用于向顯示器送數(shù)據(jù)。以后可從這個(gè)文件讀取數(shù)據(jù),就如同cin用于鍵盤輸入。 (3) 當(dāng)不再使用文件時(shí),要關(guān)閉文件,此時(shí)文件將從緩沖區(qū)中完全寫回磁盤。這樣,可以永久保存數(shù)據(jù)。 操作步驟1.說明一個(gè)文件流對象(內(nèi)部文件)。 例如: ifstream ifile; //說明輸入文件流對象ifile ofstream ofile; //說明輸出文件流對象ofile
2.打開文件,在文件流對象和磁盤文件之間建立聯(lián)系。 例如: ifile.open( "d:\\my_in_file.txt" ); ofile.open( "d:\\my_out_file.txt" ); 說明:
3.對文件進(jìn)行讀寫操作。
4.關(guān)閉文件。 ifile.close(); ofile.close(); 應(yīng)用舉例【例2.25】將百雞問題計(jì)算結(jié)果存入文件。 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; //標(biāo)題寫入文件 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; //數(shù)據(jù)寫入文件14 }15 ofile.close(); //關(guān)閉文件16 return 0;17 } 【例2.26】讀出存放百雞問題計(jì)算結(jié)果的文件 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])){ //讀標(biāo)題,請對比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; //由文件讀入數(shù)據(jù)18 if(ifile.eof()!=0) break; //當(dāng)讀到文件結(jié)束時(shí),ifile.eof()為真19 cout<<setw(6)<<i<<setw(10)<<j<<setw(10)<<k<<endl; //屏幕顯示 20 }21 ifile.close(); //關(guān)閉文件22 return 0;23 } 重要提示
ifstream ifile( "d:\\my_in_file.txt" ); //說明輸入文件流對象ifile并打開文件 ofstream ofile( "d:\\my_out_file.txt" );//說明輸出文件流對象ofile并打開文件
|
|