一、簡單檔案的輸出
①、必須包含fstream標頭檔案。
②、fstream檔案定義了用以處理的ofstream類。
③、需要自己去申明一個ofstream變數,並按照自己喜歡的方式進行命名(必須遵守最基本的命名規則)。
④、必須指明名稱空間即
using namespace std;
⑤、可以使用open的方法使ofstream物件和檔案之間產生關聯,即
ofstream outfile ; //建立一個ofstream物件名字叫做outfile
outfile.open("fish.txt") ; //使outfile物件和fish.txt之間產生關聯。
⑥、使用完檔案之後,應使用outfile.close()把檔案進行關閉,若程式設計師忘記關閉,則在程式結束的時候系統會關閉。
⑦、可以結合使用ofstream物件和<<運算子來實現各種數據的輸出。
以下給出相應的程式範例:
#include <iostream>
#inclide <fstream>
using namespace std;
const int Arsize = 40 ;
int main()
{
char automobile[Arsize] ;
int year ;
double a_price ;
double d_price ;
ofstream outfile ;//定義檔案輸出名outfile等同於cout
outfile.open("carinfo.txt") ;// 使outfile和檔案之間產生聯繫。
cout << "Enter the make and model of automobile." << endl ;
cin.getline(automobile,Arsize) ;//使用getline可以對整行的名字進行輸入
cout << "Enter the model year ." << endl ;
cin >> year ;
cout << "Enter the original asking price ." << endl ;
cin >> a_price ;
d_price = 0.913*a_price ;
//顯示汽車的所有相關資訊
cout << fixed ;// 該指令是控制計算機按浮點型進行輸出。
cout.precision(2) ;//控制浮點精度爲2 。這兩段程式簡直是裝逼利器
cout.setf(ios_base::showpoint) ;
cout << "Make and model ." << automobile << endl ;
cout << "year:" << year << endl ;
cout << "Was asking $:" << a_price << endl ;
cout << "Now asking $:" << d_price << endl ;
//在檔案中顯示汽車的所有相關資訊。
//系統會幫忙自動建立一個carinfo.txt的檔案。
outfile << fixed ;// 該指令是控制計算機按浮點型進行輸出。
outfile.precision(2) ;//控制浮點精度爲2 。這兩段程式簡直是裝逼利器
outfile.setf(ios_base::showpoint) ;
outfile << "Make and model ." << automobile << endl ;
outfile << "year:" << year << endl ;
outfile << "Was asking $:" << a_price << endl ;
outfile << "Now asking $:" << d_price << endl ;
outfile.close() ;
}
執行結果爲:不僅電腦的螢幕上會顯示汽車的相關資訊,同時在程式資料夾中會產生名爲carinfo.txt檔案。並且該檔案中的內容和螢幕上顯示的內容相同。
二、簡單的讀取檔案
①、必須包含fstream標頭檔案。
②、fstream檔案定義了用以處理的ifstream類。
③、需要自己去申明一個ifstream變數,並按照自己喜歡的方式進行命名(必須遵守最基本的命名規則)。
④、必須指明名稱空間即
using namespace std;
⑤、可以使用open的方法使ifstream物件和檔案之間產生關聯,即
ifstream infile ; //建立一個ofstream物件名字叫做outfile
infile.open("fish.txt") ; //使outfile物件和fish.txt之間產生關聯。
⑥、使用完檔案之後,應使用infile.close()把檔案進行關閉,若程式設計師忘記關閉,則在程式結束的時候系統會關閉。
⑦、可以結合使用ifstream物件和>>運算子來實現各種數據的輸出。
⑧、可以使用ifstream 物件和get()來讀取一個字元,可以使用ifstream物件和getline來讀取一行字元。
⑨、可以結合ifstream及eof()和fail()等方法來判斷輸入操作是否成功。
⑩、ifstream物件被用作測試條件,在讀取的成功的時候會轉換爲布爾值true。
注意:istream不能去嘗試開啓不存在的檔案,因此我們需要去檢查 檔案是否開啓成功。其往往使用以下操作:
ifstream inFile ;
inFile.open("bowling.txt") ;
if(!inFile.is_open())
{
exit(EXIT_FAILURE) ; //沒有開啓的時候便退出程式。
}
程式設計範例:
#include <iostream>
#inclide <fstream>
#include <cstdlib> //support for exit()
using namespace std;
const int Arsize = 40 ;
int main()
{
char filename[Arsize] ;
ifstream inFile ;
cout << "Enter name of data file:" << endl ;
cin.getline(filename,Arsize) ;
inFile.open(filename) ;
if(!inFile.is_open())
{
cout << "Could not open the file " << filename << endl ;
cout << "program terminating.\n" ;
exit(EXIT_FAILURE) ;
}
double value ;
double sum = 0;
int count = 0 ;
inFile >> value ; //使用infile獲得第一個value
while(inFile.good())
{
sum += value ;
count ++;
inFile >> value ; //get next value.
}
if(inFile.eof())
cout << "End of file reached.\n" ;
else if(inFile.fail())
cout << "Input terminated by data mismatch.\n" ;
else
cout << "Input terminated for unknown reason.\n" ;
if(count == 0)
cout << "No data processed.\n" ;
else
{
cout << "Items read : " << count << endl ;
cout << "sum: " << sum << endl ;
cout << "Average: " << sum/count << endl ;
}
}
執行結果: