c++中的檔案輸入/輸出(6):一些有用的函式
原作:ilia yordanov,loobian@cpp-home.***
tellg()——
返回乙個
int型數值,它表示「內建指標」的當前位置。此函式僅當你在讀取乙個檔案時有效。例如:
#include
void main()
tellp()——
與tellg()
有同樣的功能,但它用於寫檔案時。總而言之:當我們讀取乙個檔案,並要知道內建指標的當前位置時,應該使用
tellg()
;當我們寫入乙個檔案,並要知道內建指標的當前位置時,應該使用
tellp()
. 由於此函式的用法與
tellg()
完全一樣,我就不給出示例**了。
seekp()——
還記得seekg()
麼?當我在讀取乙個檔案,並想到達檔案中某個特定位置時,就曾使用過它。
seekp()
亦如此,只不過它用於寫入乙個檔案的時候。例如,假如我在進行檔案讀寫,而要定位到當前位置的三個字元之前,則需呼叫
filehandle.seekg(-3)
. 但如果我是在寫入乙個檔案,並且比如我要重寫後
5個字元的內容,我就必須往回跳轉
5個字元,因而,我應該使用
filehandle.seekp(-5)
.ignore()——
使用於讀取檔案之時。如果你想略過一定數量的字元,只需使用此函式。實際上,你也可以使用
seekg()
來代替,然而使用
ignore()
有乙個優點
——你可以指定乙個特定「界限規則(
delimiter rule
)」,同樣使得
ignore()
在指定的位置停下。函式原型如下:
istream& ignore( int ncount, delimiter );
ncount
表示要略過的字元數量,而
delimiter
—— 與它的名稱有著同樣的含義:假如你想在檔案末尾停下,則可使用
eof值傳入,這樣一來此函式就等同於
seekg()
;但該引數還可以使用其他值,例如
『/n』
這樣可以在換行的同時定位在新行處。下面是示例:
#include
void main()
getline()——
雖然前面的章節中我曾提到過這個函式,但還有一些內容我們未曾涉及:此函式不但可用於逐行讀取,而且它還可以設為遇到某個特定字元後停止讀取。下面給出傳遞這一引數的方法:
getline(array,array_size,delim);
以下為示例**:
#include
void main()
peek()——
此函式將返回輸入流檔案的下乙個字元,但它不移動內建指標。我想你該記得,像
get()
這樣的函式也返回輸入流檔案的下乙個字元,而與此同時它將移動內建指標。所以當你再次呼叫
get()
函式的時候,它會返回再下乙個字元,而非前面那個。哦,使用
peek()
也會返回字元,但它不會移動「游標」。所以,假如你連續兩次呼叫
peek()
函式,它會返回同乙個字元。考慮以下**:
#include
void main()
順便說一下,我忘了講
——peek()
函式實質上返回的是字元的
ascii
碼,而非字元本身。因此,假如你想看到字元本身,你得像我在示例中做的那樣進行呼叫(譯註:即要轉為
char
型別)。
_unlink()——
刪除乙個檔案。假如你要使用此函式,需要在你的程式中包含
io.h
標頭檔案。下面是示例**:
#include
#include
void main()
putback()——
此函式將返回最後乙個所讀取字元,同時將內建指標移動
-1個字元。換言之,如果你使用
get()
來讀取乙個字元後再使用
putback()
,它將為你返回同乙個字元,然而同時會將內建指標移動
-1個字元,所以你再次使用
get()
時,它還是會為你返回同樣的字元。下面是示例**:
#include
void main()
flush()——
在處理輸出流檔案的時候,你所存入的資料實際上並非立刻寫入檔案,而是先放入乙個緩衝區中,直到該緩衝區放滿資料之後,這些資料才被存入真正的檔案中(在你的磁碟上)。旋即緩衝區會被清空,再重新進行下一輪寫入。
但假如你想在緩衝區寫滿之前就將其中的資料寫入磁碟,則使用
flush()
函式。只須像這樣進行呼叫:
filehandle.flush()
,這樣緩衝區內的資料將會寫入實際的物理檔案,而後緩衝區被清空。
再補充一點(高階的)內容:
flush()
函式會呼叫與相應流緩衝(
streambuf
)相聯絡的
sync()
函式(出自
msdn
)。結語
嗯,我希望你現在可以實現你的檔案輸入
/google.***
,但你可別來問我!我不對任何詢問我關於如何實現某個程式此類問題的郵件作答覆。
loobian@cpp-home.***
想獲取更多的
c++.cpp-home.***
翻譯 C 中的檔案輸入 輸出 一些有用的函式
tellg 返回乙個 int型數值,它表示 內建指標 的當前位置。此函式僅當你在讀取乙個檔案時有效。例如 include void main tellp 與tellg 有同樣的功能,但它用於寫檔案時。總而言之 當我們讀取乙個檔案,並要知道內建指標的當前位置時,應該使用 tellg 當我們寫入乙個檔案...
C 中的輸入輸出(一)
在c語言中,用printf 和scanf 進行輸入輸出,但是不能保證所輸入輸出的資料是安全 可靠的。c 的i o操作時型別安全的 type safe iostream標頭檔案中定義了四種流物件,分別是cin cout cerr和clog。其中,向鍵盤輸入時用cin流,向顯示器輸出時用cout流,向顯...
c 檔案的輸入輸出
c 通過以下幾個類支援檔案的輸入輸出 對這些類的乙個物件所做的第乙個操作通常就是將它和乙個真正的檔案聯絡起來,也就是說開啟乙個檔案。被開啟的檔案在程式中由乙個流物件 stream object 來表示 這些類的乙個例項 而對這個流物件所做的任何輸入輸出操作實際就是對該檔案所做的操作。要通過乙個流物件...