使用檔案流操作二進位制檔案(檔案實訓)

2021-10-05 15:12:54 字數 2046 閱讀 4456

編寫乙個在檔案中查詢某種服裝的數量並返回的函式。

檔案流操作二進位制檔案的讀寫

寫二進位制檔案

以檔案流的方式操作檔案一樣可以支援二進位制方式的塊讀寫。

例如:

ofstream cl

("c.dat"

, ios::binary)

;int n =10;

cl.write((

char*)

&t,sizeof

(t))

;

第一行程式申明了 ofstream 的物件 cl,並以二進位制方式( ios::binary )開啟檔案c.dat(如果檔案c.dat不存在,會先建立)用於輸出( fstream 的物件的物件都是用於檔案輸出)。

第三行則將整數 t 以塊寫入的方式寫入檔案c.dat。函式 write 的第乙個引數是要寫入檔案的資料首位址,必須是char*型別,要寫入的資料是 t,所以該實參為&t,並進行了型別轉換。第二個引數是要寫入檔案的位元組數,t 整型變數,所佔位元組數可以用sizeof(t)求得。

讀二進位制檔案

二進位制的塊讀出方式和塊寫入方式類似。

例如下面的程式可以將寫到檔案c.dat中的整數讀出:

ifstream fl

("c.dat"

, ios::binary)

;int n;

fl.read((

char*)

&n,sizeof

(n))

;

第一行程式申明 ifstream 的物件 fl ,並以二進位制方式開啟檔案c.dat用於讀。

第三行從檔案中讀出乙個整數。read 函式的第乙個引數是讀出的資料要放到記憶體中的位置,型別為char*。讀出的整數要賦值給 n,所以該實參為&n,並進行了型別轉換。第二個引數是讀出的位元組數,乙個整數的位元組數可以用sizeof(n)求得。

#include

#include

using

namespace std;

//結構clothing

struct clothing

;//宣告外部函式,函式getnumber在其它原始檔中實現

extern

intgetnumber

(ifstream &ifile,

char

*label)

;int

main()

//關閉檔案

cloth.

close()

;//開啟檔案用於讀,二進位制方式

ifstream fin

("cloth.dat"

,ios::binary)

;//輸入要查詢的服裝標籤

cin>>le;

//呼叫函式getnumber

n =getnumber

(fin,le)

;//輸出服裝件數

cout

fin.

close()

;return0;

}

#include

#include

#include

using

namespace std;

// 結構clothing

struct clothing ;/*

函式getnumber:在檔案ifile中查詢標籤為lable的服裝數量

引數ifile:存放服裝資訊的檔案,label:要查詢的服裝標籤

返回值:標籤為label的服裝數量

說明:檔案中ifile中存放著服裝資訊,服裝資訊為以二進位制寫入的乙個個clothing結構變數

*/int

getnumber

(ifstream &ifile,

char

*label)

ifile.

read((

char*)

&t,sizeof

(clothing));

}return0;

}

檔案流和二進位製流操作

filestream filestream 對於在檔案系統上讀取和寫入檔案非常有用,filestream 快取輸入和輸出,以獲得更好的效能。filestream 類能夠以同步或非同步這兩種模式之一開啟檔案,而且對同步方法 read 和 write 和非同步方法 beginread 和beginwri...

二進位制檔案操作

無關資料區 jpg資料區 無關資料區 jpg資料區 無關資料區 jpg資料區 現想把這些jpg資料從該檔案中讀出來,生成乙個個單獨的檔案,該如何做呢?幫你寫了個程式,測試了只含有乙個資訊的檔案 呼叫 void test fp.close 思路是,先得到ff的值,然後再判斷下一位是否是0xd8,但這裡...

二進位制檔案操作

無關資料區 jpg資料區 無關資料區 jpg資料區 無關資料區 jpg資料區 現想把這些jpg資料從該檔案中讀出來,生成乙個個單獨的檔案,該如何做呢?幫你寫了個程式,測試了只含有乙個資訊的檔案 呼叫 void test fp.close 思 路是,先得到ff的值,然後再判斷下一位是否是0xd8,但這...