若是程序的運行結果僅僅顯示在屏幕上,當要再次查看結果時,必須將程序從新運行一遍;並且,這個結果也不能被保留。
若是但願程序的運行結果可以永久保留下來,供隨時查閱或取用,則須要將其保存在文件中。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並打開文件