SaveFile.close(); —— 既然我們打開了一個流文件,那么當(dāng)我們用完它之后,就必須關(guān)閉它。SaveFile是ofstream類的一個對象,而該類(ofstream)有一個用于關(guān)閉文件的成員函數(shù),即close() 函數(shù)。因此,我們只要依次輸入文件句柄名,點號和close(),就可以關(guān)閉該文件!
C++中的文件輸入/輸出(2):讀取文件
讀取文件
你已經(jīng)看到了應(yīng)該如何寫文件?,F(xiàn)在,當(dāng)我們已經(jīng)得到cpp-home.txt文件時,我們將要讀取它,并且將內(nèi)容打印在屏幕上。
首先,我要指出的是,有很多種方法可以讀取文件。以后我會向你們介紹所有的方法(就我所知的)。此刻,我先向你展示的方法(我認(rèn)為的)。
正如你已經(jīng)熟悉的——我將首先給出一段程序代碼,然后,我會詳細(xì)地對它進(jìn)行解釋說明:
#i nclude
void main() //程序從這里開始
{
ifstream OpenFile("cpp-home.txt");
char ch;
while(!OpenFile.eof())
{
OpenFile.get(ch);
cout << ch;
}
OpenFile.close();
}
你想必已經(jīng)了解首行的意義所在,而剩下的部分將由我為你解釋。
ifstream OpenFile(“cpp-home.txt”) —— 我猜它對現(xiàn)在的你而言多少會熟悉些!ifstream表示“input file stream(輸入文件流)”。在前一節(jié)的程序中,出現(xiàn)的則是ofstream,它的意義是“output file stream(輸出文件流)”。前一節(jié)的程序是進(jìn)行文件的寫操作,這就是它用“output(輸出)”來表示的原因。而本節(jié)的程序則是讀取一個文件,這就是它用“input(輸入)”來表示的原因。這一行剩下的代碼于你而言應(yīng)當(dāng)是熟悉的了:OpenFile是ifstream類的一個對象,它將關(guān)聯(lián)一個輸入文件流;而用引號括住的內(nèi)容,就是將要打開的文件的名稱。
請注意:這里沒有對要打開的文件是否存在進(jìn)行測試!以后我將向你指出如何進(jìn)行檢測。
char ch; —— 聲明一個字符數(shù)組(array of type char)。只是有一點要提醒你:這樣的數(shù)組(arrays)只能存儲一個ASCII字符。
while(!OpenFile.eof()) —— 如果已經(jīng)到達(dá)文件末尾,eof( )函數(shù)將返回一個非零值。因此我們所設(shè)計的這個循環(huán)將一直持續(xù),直至我們的文件操作到達(dá)文件末尾。這樣我們就可以遍歷整個文件,以便對它進(jìn)行讀取。
OpenFile.get(ch); —— OpenFile是類ifstream的一個對象。該類聲明了一個名為get( )的成員函數(shù)。只要我們擁有該對象,我們自然就可以調(diào)用這個函數(shù)。get( )函數(shù)從相應(yīng)的流文件中讀出一個字符,并將其返回給變量。在本例中,get( )函數(shù)只帶一個參數(shù)——用于存儲所讀取的字符的變量。所以,調(diào)用OpenFile.get(ch)后程序?qū)腛penFile流中讀取一個字符并存入變量ch中。
注意:如果你再次調(diào)用該函數(shù),它將讀取下一個字符,而不是原來的那一個!你過后將理解為什么會這樣。
這就是我們要不斷反復(fù)循環(huán)直至讀操作到達(dá)文件尾的原因。每循環(huán)一次,我們將讀出一個字符并將它保存在ch中。
cout << ch; —— 顯示ch變量值,它保存了讀取得到的字符。
File.close(); —— 我們打開了一個流式文件,就需要關(guān)閉它。使用close()函數(shù)即可將它關(guān)閉,這和前一節(jié)的一樣!
注意:一旦你關(guān)閉了一個文件,在你重新打開它之前,你不能再對它進(jìn)行訪問。
大功告成了!我希望你能明白我的解釋。當(dāng)你編譯并運行這個程序的時候,它應(yīng)當(dāng)會輸出:
“Hello World, from www.cpp-home.com and Loobian!”
C++中的文件輸入/輸出(3):掌握輸入/輸出流
掌握輸入/輸出流
在這一章里,我會提及一些有用的函數(shù)。我將為你演示如何打開一個可以同時進(jìn)行讀、寫操作的文件;此外,我還將為你介紹其它打開文件的方法,以及如何判斷打開操作是否成功。因此,請接著往下讀!
到目前為止,我已為你所展示的只是單一的打開文件的途徑:要么為讀取而打開,要么為寫入而打開。但文件還可以以其它方式打開。迄今,你應(yīng)當(dāng)已經(jīng)認(rèn)識了下面的方法:
ifstream OpenFile(“cpp-home.txt”);
噢,這可不是的方法!正如以前所提到的,以上的代碼創(chuàng)建一個類ifstream的對象,并將文件的名字傳遞給它的構(gòu)造函數(shù)。但實際上,還存在有不少的重載的構(gòu)造函數(shù),它們可以接受不止一個的參數(shù)。同時,還有一個open()函數(shù)可以做同樣的事情。下面是一個以上代碼的示例,但它使用了open()函數(shù):
ifstream OpenFile;
OpenFile.open(“cpp-home.txt”);
你會問:它們之間有什么區(qū)別嗎?哦,我曾做了不少測試,結(jié)論是沒有區(qū)別!只不過如果你要創(chuàng)建一個文件句柄但不想立刻給它指定一個文件名,那么你可以使用 open()函數(shù)過后進(jìn)行指定。順便再給出一個要使用open()函數(shù)的例子:如果你打開一個文件,然后關(guān)閉了它,又打算用同一個文件句柄打開另一個文件,這樣一來,你將需要使用open()函數(shù)。
C++中的文件輸入/輸出(2):讀取文件
讀取文件
你已經(jīng)看到了應(yīng)該如何寫文件?,F(xiàn)在,當(dāng)我們已經(jīng)得到cpp-home.txt文件時,我們將要讀取它,并且將內(nèi)容打印在屏幕上。
首先,我要指出的是,有很多種方法可以讀取文件。以后我會向你們介紹所有的方法(就我所知的)。此刻,我先向你展示的方法(我認(rèn)為的)。
正如你已經(jīng)熟悉的——我將首先給出一段程序代碼,然后,我會詳細(xì)地對它進(jìn)行解釋說明:
#i nclude
void main() //程序從這里開始
{
ifstream OpenFile("cpp-home.txt");
char ch;
while(!OpenFile.eof())
{
OpenFile.get(ch);
cout << ch;
}
OpenFile.close();
}
你想必已經(jīng)了解首行的意義所在,而剩下的部分將由我為你解釋。
ifstream OpenFile(“cpp-home.txt”) —— 我猜它對現(xiàn)在的你而言多少會熟悉些!ifstream表示“input file stream(輸入文件流)”。在前一節(jié)的程序中,出現(xiàn)的則是ofstream,它的意義是“output file stream(輸出文件流)”。前一節(jié)的程序是進(jìn)行文件的寫操作,這就是它用“output(輸出)”來表示的原因。而本節(jié)的程序則是讀取一個文件,這就是它用“input(輸入)”來表示的原因。這一行剩下的代碼于你而言應(yīng)當(dāng)是熟悉的了:OpenFile是ifstream類的一個對象,它將關(guān)聯(lián)一個輸入文件流;而用引號括住的內(nèi)容,就是將要打開的文件的名稱。
請注意:這里沒有對要打開的文件是否存在進(jìn)行測試!以后我將向你指出如何進(jìn)行檢測。
char ch; —— 聲明一個字符數(shù)組(array of type char)。只是有一點要提醒你:這樣的數(shù)組(arrays)只能存儲一個ASCII字符。
while(!OpenFile.eof()) —— 如果已經(jīng)到達(dá)文件末尾,eof( )函數(shù)將返回一個非零值。因此我們所設(shè)計的這個循環(huán)將一直持續(xù),直至我們的文件操作到達(dá)文件末尾。這樣我們就可以遍歷整個文件,以便對它進(jìn)行讀取。
OpenFile.get(ch); —— OpenFile是類ifstream的一個對象。該類聲明了一個名為get( )的成員函數(shù)。只要我們擁有該對象,我們自然就可以調(diào)用這個函數(shù)。get( )函數(shù)從相應(yīng)的流文件中讀出一個字符,并將其返回給變量。在本例中,get( )函數(shù)只帶一個參數(shù)——用于存儲所讀取的字符的變量。所以,調(diào)用OpenFile.get(ch)后程序?qū)腛penFile流中讀取一個字符并存入變量ch中。
注意:如果你再次調(diào)用該函數(shù),它將讀取下一個字符,而不是原來的那一個!你過后將理解為什么會這樣。
這就是我們要不斷反復(fù)循環(huán)直至讀操作到達(dá)文件尾的原因。每循環(huán)一次,我們將讀出一個字符并將它保存在ch中。
cout << ch; —— 顯示ch變量值,它保存了讀取得到的字符。
File.close(); —— 我們打開了一個流式文件,就需要關(guān)閉它。使用close()函數(shù)即可將它關(guān)閉,這和前一節(jié)的一樣!
注意:一旦你關(guān)閉了一個文件,在你重新打開它之前,你不能再對它進(jìn)行訪問。
大功告成了!我希望你能明白我的解釋。當(dāng)你編譯并運行這個程序的時候,它應(yīng)當(dāng)會輸出:
“Hello World, from www.cpp-home.com and Loobian!”
C++中的文件輸入/輸出(3):掌握輸入/輸出流
掌握輸入/輸出流
在這一章里,我會提及一些有用的函數(shù)。我將為你演示如何打開一個可以同時進(jìn)行讀、寫操作的文件;此外,我還將為你介紹其它打開文件的方法,以及如何判斷打開操作是否成功。因此,請接著往下讀!
到目前為止,我已為你所展示的只是單一的打開文件的途徑:要么為讀取而打開,要么為寫入而打開。但文件還可以以其它方式打開。迄今,你應(yīng)當(dāng)已經(jīng)認(rèn)識了下面的方法:
ifstream OpenFile(“cpp-home.txt”);
噢,這可不是的方法!正如以前所提到的,以上的代碼創(chuàng)建一個類ifstream的對象,并將文件的名字傳遞給它的構(gòu)造函數(shù)。但實際上,還存在有不少的重載的構(gòu)造函數(shù),它們可以接受不止一個的參數(shù)。同時,還有一個open()函數(shù)可以做同樣的事情。下面是一個以上代碼的示例,但它使用了open()函數(shù):
ifstream OpenFile;
OpenFile.open(“cpp-home.txt”);
你會問:它們之間有什么區(qū)別嗎?哦,我曾做了不少測試,結(jié)論是沒有區(qū)別!只不過如果你要創(chuàng)建一個文件句柄但不想立刻給它指定一個文件名,那么你可以使用 open()函數(shù)過后進(jìn)行指定。順便再給出一個要使用open()函數(shù)的例子:如果你打開一個文件,然后關(guān)閉了它,又打算用同一個文件句柄打開另一個文件,這樣一來,你將需要使用open()函數(shù)。

