編寫乙個在檔案中查詢某種服裝的數量並返回的函式。
檔案流操作二進位制檔案的讀寫
寫二進位制檔案
以檔案流的方式操作檔案一樣可以支援二進位制方式的塊讀寫。
例如:
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,但這...