官术网_书友最值得收藏!

2.13 文件輸入和輸出

程序與文件的數據交換方法同它與標準輸入/輸出設備的數據交換方法相同,從文件讀取數據與從鍵盤輸入數據的方法相似,將數據寫入文件與將數據輸出到顯示器的方法相似。但iostream.h(或iostream)中定義的數據類型和函數只能用于標準輸入/輸出設備的數據處理。

C++將處理文件的數據類型放在了頭文件fstream.h(標準C++是fstream)中,其中定義了ifstream和ofstream兩種數據類型,ifstream表示輸入文件流,ofstream表示輸出文件流。C++文件操作過程可概括為以下5個步驟。

<1> 在程序中包含頭文件fstream.h(或fstream):

#include <fstream.h>;

<2> 定義文件流變量:

ifstream inData;  //定義輸入文件流變量
ofstream outData;  //定義輸出文件流變量

<3> 將文件流變量與磁盤文件關聯起來:

fileVar.open(filename,mode)

fileVar是第<2>步定義的文件流變量,filename是磁盤文件名,mode是打開或建立文件的方式,可以是:

ios::in 打開輸入文件,ifstream類型變量的默認方式

ios::out 建立輸出文件,ofstream類型變量的默認方式

ios::app 增加方式,若文件存在,將在文件尾增加數據;若不存在,就建立文件

ios::trunk 若文件存在,則文件中已有內容將被清除

ios::nocreate 若文件不存在,則打開操作失敗

ios::noreplace 若文件存在,則打開操作失敗

例如,要打開目錄C:\DK下的文件ab.txt,若該文件存在就打開,若不存在就建立該文件,可以用下面的命令建立:

ofstream outData;
outData.open("C:\\DK\\ab.txt",ios::app);

說明:由于“\”被C++語言用于轉義符,所以在指定文件路徑時用“\\”作為文件路徑中目錄之間的間隔符,其中第一個“\”是轉義符,與回車換行符“\n”中的“\”意義相同。

第<2>、<3>步也可以合并為一步。下面的命令與上面兩條命令等價:

ofstream outData("C:\\dk\ab.txt",ios::app);

<4> 用文件流(<<或>>)操作文件,讀/寫文件數據。將輸入文件流變量與>>連接就能夠從文件中讀入數據,與cin用法相同。將輸出文件流變量與<<連接,就能夠將數據輸出到文件中,與cout用法相同。

<5> 關閉文件。文件操作完成后,應該關閉文件。關閉文件時,系統會立即將文件緩沖區中的數據寫回磁盤文件,并且斷開文件流變量與磁盤文件之間的聯系。關閉文件的方法如下:

inData.close();   //inData是輸入文件流變量
ouData.close();   //ouData是輸出文件流變量

例2-25】 建立一磁盤文件C:\data.txt,從鍵盤輸入數據:23,34,56,78,98,23,32,89,12到文件中,然后從該磁盤文件中將這些數據讀出到數組a中,并計算其總和。

//Eg2-25.cpp
#include<iostream.h>
#include<fstream.h>
void main(){
   ofstream outData("c:\\data.txt"); //在C盤根目錄下建立文件data.txt
   ifstream inData;   //定義inData為輸入數據的文件
   int x,a[10];
   for (int i=0;i<10;i++){
      cin>>x;
      outData<<x<<" "; //outData將x寫入文件data.txt,數據間用空白間隔
}
outData.close();   //關閉文件data.txt
inData.open("C:\\data.txt");//以輸入方式打開C:\data.txt文件,以便從中讀數據
   int j=0;
   while (!inData.eof())  //從文件中讀數據,直到遇到文件結束符
      inData>>a[j++];   //從文件中將數據讀入到數組a中
   inData.close();   //關閉文件
   int s=0;
   for(i=0;i<10;i++){
      s+=a[i];
      cout<<a[i]<<" ";   //輸出數組a,該數組中的數據來源于文件
   }
   cout<<endl;
   cout<<"the sum is: "<<s<<endl;
}
主站蜘蛛池模板: 石门县| 安国市| 新闻| 寿光市| 达日县| 呼和浩特市| 柞水县| 藁城市| 繁峙县| 扶余县| 通城县| 浦北县| 渭源县| 周至县| 阿鲁科尔沁旗| 开封县| 舞阳县| 甘泉县| 香河县| 芜湖县| 泊头市| 邹平县| 华容县| 栖霞市| 垣曲县| 保靖县| 河西区| 彭泽县| 沙田区| 平罗县| 万宁市| 天门市| 东港市| 迭部县| 缙云县| 固镇县| 屯门区| 乌兰察布市| 华亭县| 建平县| 江油市|