C++中的檔案輸入/輸出(2):讀取檔案 (轉)

amyz發表於2007-11-13
C++中的檔案輸入/輸出(2):讀取檔案 (轉)[@more@]

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

原作:Ilia Yordanov,  loobian@cpp-home.com:namespace prefix = o ns = "urn:schemas--com::office" />

 

讀取檔案

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

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

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

#include

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 <

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

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

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

“Hello World, from and Loobian!”


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-982160/,如需轉載,請註明出處,否則將追究法律責任。

相關文章