第二十三講 二進位制檔案的操作與字串流

2021-05-23 21:48:38 字數 1640 閱讀 7584

第二十三講:二進位制檔案的操作與字串流

本講基本要求

* 掌握:二進位制檔案讀寫、顯示操作;字元流在c++程式設計中的應用。

* 理解:檔案流與字串流的區別。

重點、難點

◆二進位制檔案讀寫、顯示操作;字元流在c++程式設計中的應用。

一、對二進位制檔案的操作

前面已經介紹,二進位制檔案不是以ascii**存放資料的,它將記憶體中資料儲存形式不加轉換地傳送到磁碟檔案,因此它又稱為記憶體資料的映像檔案。因為檔案中的資訊不是字元資料,而是位元組中的二進位制形式的資訊,因此它又稱為位元組檔案。

對二進位制檔案的操作也需要先開啟檔案,用完後要關閉檔案。在開啟時要用ios::binary指定為以二進位制形式傳送和儲存。二進位制檔案除了可以作為輸入檔案或輸出檔案外,還可以是既能輸入又能輸出的檔案。這是和ascii檔案不同的地方。

1.用成員函式read和write讀寫二進位制檔案

對二進位制檔案的讀寫主要用lstream類的成員函式read和write來實現。這兩個成員函式的原型為

istream&read(char *buffer,inllea);

ostream&write(coastchar*buffer,intlen);

字元指標buffer指向記憶體中一段儲存空間。len是讀寫的位元組數。呼叫的方式為

a.write(pl,50);

b.read(p2,30);

上面第一行中的a是輸出檔案流物件,wrtte函式將字元指標pl所給出的位址開始的50個位元組的內容不加轉換地寫到磁碟檔案中。在第二行中,b是輸入檔案流物件,read函式從b所關聯的磁碟檔案中,讀人30個位元組(或遇eof結束),存放在字元指標p2所指的一段空間內。

例14 將一批資料以二進位制形式存放在磁碟檔案中。

可以寫出下面的程式:

#include

using namespace std;

struct student

;int main()

;ofstream outfile("stud.dat",ios::binary);

if(!outfile)

;int main()

;int main()

;fstream iofile("stud.dat",ios::in|ios::out|ios::binary);

//用fstream類定義輸入輸出二進位制檔案流物件iofile

if(!iofile)

;int main()

;char c[50]; //使用者定義的字元陣列

ostrstream strout(c,30); //建立輸出字元申流,與陣列c建立關聯,緩衝區長30

for(int i=0;i<3;i++) //向字元陣列c寫3個學生的資料

strout<

#include

using namespace std;

int main()

ostrstream strout(c,sizeof(c));//建立輸出申流物件strout並與字元陣列c關聯

劍指offer第二十三題二叉搜尋樹的後序遍歷

放在前面 寫了兩天 最後寫 了!輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。package test class solution public boolean verifysquenceofbst int...

C 的二進位制檔案操作

1 數值應儲存在二進位制檔案 首先列舉文字 二進位制檔案的操作 讀寫 方法 方式 1 讀取 拷貝 刪除 using system using system.io class test 讀取檔案 using streamreader sr file.opentext path 刪除 拷貝 try ca...

二進位制檔案的讀寫操作

二進位制檔案不是以 ascii 存放資料的,它將記憶體中資料儲存形式不加轉換地傳送到 磁碟檔案,因此它又稱為記憶體資料的映像檔案。因為檔案中的資訊不是字元資料,而是位元組 中的二進位制形式的資訊,因此它又稱為位元組檔案。對二進位制檔案的操作需要先開啟檔案,用完後要關閉檔案。在開啟時要用 ios bi...