C++中的檔案輸入/輸出(2)

來源:互聯網
上載者:User
 

C++中的檔案輸入/輸出(2)

原作:Ilia Yordanov,  loobian@cpp-home.com

 

讀取檔案

 

你已經看到了應該如何寫檔案。現在,當我們已經得到cpp-home.txt檔案時,我們將要讀取它,並且將內容列印在螢幕上。

首先,我要指出的是,有很多種方法可以讀取檔案。以後我會向你們介紹所有的方法(就我所知的)。此刻,我先向你展示最佳的方法(我認為的)。

正如你已經熟悉的——我將首先給出一段程式碼,然後,我會詳細地對它進行解釋說明:

 

#include <fstream.h>

 

void main() //程式從這裡開始

{

    ifstream OpenFile("cpp-home.txt");

 

    char ch;

    while(!OpenFile.eof())

    {

       OpenFile.get(ch);

       cout << ch;

    }

    OpenFile.close();

}

 

你想必已經瞭解首行的意義所在,而剩下的部分將由我為你解釋。

ifstream OpenFile(“cpp-home.txt”) —— 我猜它對現在的你而言多少會熟悉些!ifstream表示“input file stream(輸入檔案流)”。在前一節的程式中,出現的則是ofstream,它的意義是“output file stream(輸出檔案流)”。前一節的程式是進行檔案的寫操作,這就是它用“output(輸出)”來表示的原因。而本節的程式則是讀取一個檔案,這就是它用“input(輸入)”來表示的原因。這一行剩下的代碼於你而言應當是熟悉的了:OpenFile是ifstream類的一個對象,它將關聯一個輸入檔案流;而用引號括住的內容,就是將要開啟的檔案的名稱。

請注意:這裡沒有對要開啟的檔案是否存在進行測試!以後我將向你指出如何進行檢測。

 

char ch; —— 聲明一個字元數組(array of type char)。只是有一點要提醒你:這樣的數組(arrays)只能儲存一個ASCII字元。

 

while(!OpenFile.eof()) —— 如果已經到達檔案末尾,eof( )函數將返回一個非零值。因此我們所設計的這個迴圈將一直持續,直至我們的檔案操作到達檔案末尾。這樣我們就可以遍曆整個檔案,以便對它進行讀取。

 

OpenFile.get(ch); —— OpenFile是類ifstream的一個對象。該類聲明了一個名為get( )的成員函數。只要我們擁有該對象,我們自然就可以調用這個函數。get( )函數從相應的流檔案中讀出一個字元,並將其返回給變數。在本例中,get( )函數只帶一個參數——用於儲存所讀取的字元的變數。所以,調用OpenFile.get(ch)後程式將會從OpenFile流中讀取一個字元並存入變數ch中。

注意:如果你再次調用該函數,它將讀取下一個字元,而不是原來的那一個!你過後將理解為什麼會這樣。

這就是我們要不斷反覆迴圈直至讀操作到達檔案尾的原因。每迴圈一次,我們將讀出一個字元並將它儲存在ch中。

 

cout <<  ch; —— 顯示ch變數值,它儲存了讀取得到的字元。

 

File.close(); —— 我們開啟了一個流式檔案,就需要關閉它。使用close()函數即可將它關閉,這和前一節的一樣!

注意:一旦你關閉了一個檔案,在你重新開啟它之前,你不能再對它進行訪問。

 

大功告成了!我希望你能明白我的解釋。當你編譯並運行這個程式的時候,它應當會輸出:

“Hello World, from www.cpp-home.com and Loobian!”

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.