簡單的檔案輸入\輸出

2020-08-12 20:08:27

一、簡單檔案的輸出

①、必須包含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 ;
    }
}

執行結果: