檔案操作的一些函式

2022-04-06 23:40:46 字數 3151 閱讀 3838

istream& read(char* s, streamsize n):從流中讀取n個字元放到s指向的陣列中,讀取過程中不會檢查資料(意味著讀取到空格或者

換行符不會停止讀取),也不會自動新增乙個null作為字串結束符,如果碰到eof則函式結束,並置eofbit和failbit為1;如果流中

的字元數目超出了指定數目,則剩下的字元依然儲存在流中

ostream& write(const char* s, streamsize n):從s指向陣列中取出n個字元放到流中,提取過程中不會檢查資料(意味著即使讀取

的是null也不會停止提取)

steamsize gcount() const:返回上一次非格式化提取運算子所讀取的字元數,即返回的是get()、getline()、ignore()或者read()

函式所讀取的字元數,而不能用於提取operator>>()函式所提取的字元數

注:對於get()函式,讀取的是n-1個字元;對於getline()函式,如果第n個字元不是結束符delim,則讀取的是n-1個字元;如果第n個

字元是結束符delim,則讀取的是n個字元,且讀取結束符後會將其拋棄,這同前面將的get()和getline()函式是一樣的

int peek():返回輸入流的下乙個字元,如果處於檔案末尾,則返回eof

注:該函式只是檢視輸入流中的資料,並不會真正的提取資料並寫在標準輸出裝置上

istream& putback(char c):將乙個字元從輸入流中丟棄,並用字元ch代替插入到輸入流中

假如我們指向讀取檔案指定位置之後資料,那麼fstream類的seekg()成員函式可以為我們達到目的。

seekg()函式原型如下:

istream& seekg( streampos pos );

istream& seekg( streamoff off, ios::seek_dir dir );

該函式從istream類繼承而來,它被過載了兩次,第1個原型將指標定位到離檔案開頭pos個位元組處;第2個原型則將指標定位到距第2個引數

指定的位置off個位元組處。

假如我們想要在檔案指定位置處輸出資料,那麼fstream類的seekp()成員函式可以為我們達到目的。

seekp()函式原型如下:

ostream& seekp( streampos pos );

ostream& seekp( streamoff off, ios::seek_dir dir );

一般來說,第2個引數有下列幾種可能的值:

ios::beg     //相對於檔案開頭的偏移量

ios::cur     //相對於當前位置的偏移量

ios::end     //相對於檔案結尾的偏移量

streampos tellg():返回輸入流中當前指標的位置

streampos tellp():返回輸出流中當前指標的位置

檔案狀態位

goodbit             無錯誤        good()

eofbit             已到達檔案末尾     eof()

failbit             非致命的i/o錯誤    fail()

badbit            致命的i/o錯誤     bad()

在vs中可看到檔案狀態位的定義如下:

static

const _iostate goodbit = (_iostate)0x0

;static

const _iostate eofbit = (_iostate)0x1

;static

const _iostate failbit = (_iostate)0x2

;static

const _iostate badbit = (_iostate)0x4;

關於檔案狀態位的幾個函式:

iostate rdstate() const:返回流的當前狀態位,比如if(input.rdstate() &std::ios::failbit)即通過與運算來判斷當前的流狀態是否為failbit

void clear(iostate state =goodbit):重置狀態位為state,即先將所有狀態位清零,再將狀態位設定為state。預設重置狀態位為goodbit,即將所有標誌位清零;

你也可以傳遞引數,如clear(failbit)則重置狀態位為failbit。我們一般使用預設值。

void

setstate(iostate state):設定狀態位,做法是不清零當前的狀態位,而只是將引數對應的狀態位置位,即設定狀態位為rdstate()|state,即:

void

ios::setstate (iostate state)

注:1.對於fstream物件來說,seekp()/seekg()等價,因為讀寫指標是同乙個指標,而且tellg()/tellp()也等價,因為讀寫指標在同乙個位置。

而對於ifstream/ofstream就需要使用特定函式。

#include #include 

using

namespace

std;

const

int num = 20

;struct

people

;int

main()

; people p1 = ;

fstream fp(

"people.txt

", ios::out |ios::binary);

fp.write((

char*)&p, sizeof

(p));

fp.write((

char*)&p1, sizeof

(p1));

fp.close();

people temp;

fp.open(

"people.txt

", ios::in |ios::binary);

while(fp.read((char*)&temp, sizeof

(temp)))

cout

<"\t"

<"\t"

<"\t"

<"\t"

fp.close();

system(

"pause");

return0;

}

一些檔案操作函式

fileage 函式 返回檔案已存在的時間 fileclose 命令 關閉指定的檔案 filecreate 命令 用指定的檔名建立新檔案 filedatetodatetime 函式 將dos的日期格式轉換為delphi的日期格式 fileexists 函式 檢查檔案是否存在 filegatattr ...

檔案操作的一些函式

fileinfo fi new fileinfo filepath file info.check file time or file size long size fi.length 1024 獲取檔案的名稱 fileinfo fi new fileinfo filepath return fi....

檔案操作的一些函式

檔案的操作 1,提高速度 使用檔案指標 2 檔案指標與磁碟檔案建立聯絡,以後對檔案操作都將通過檔案指標來進行。fopen 檔名,使用檔案方式 檔案開啟不成功 將返回乙個空指標null 檔案使用方式 r w rb wb fgetc getc 從指定檔案中一次讀取乙個字元 fputc putc 一次輸出...