- C++面向對象程序設計
- 杜茂康等編著
- 904字
- 2019-01-01 05:54:56
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; }
- Big Data Analytics with Hadoop 3
- Mastering Hadoop 3
- 嵌入式系統應用
- Google App Inventor
- MicroPython Projects
- 傳感器技術應用
- Creo Parametric 1.0中文版從入門到精通
- MATLAB/Simulink權威指南:開發環境、程序設計、系統仿真與案例實戰
- The Python Workshop
- 深度學習與目標檢測
- 過程控制系統
- Machine Learning Algorithms(Second Edition)
- 嵌入式Linux系統實用開發
- 會聲會影X4中文版從入門到精通
- Mastering Predictive Analytics with scikit:learn and TensorFlow