C 極簡總結 I O 流類庫(四)

2021-10-05 19:56:12 字數 2902 閱讀 5803

概要

在c++中,檔案被看作是字元的序列,即檔案是由乙個個的字元資料順序組成的。正因為c++檔案是乙個字元流,而不考慮記錄的界限,因此這種檔案稱為流式檔案。

按資料的儲存形式分類

二進位制檔案:把資料的內部儲存形式原樣存放到檔案中。(好處:無需儲存形式轉換,儲存效率高)

按資料的訪問方式分類順序檔案

隨機讀寫檔案

在c++ 中檔案被定義為檔案流類的乙個物件。

1、檔案流

c++ 中有三種檔案流,

2、檔案的開啟與關閉

檔案的開啟方式

標識常量值含義

ios::in0x0001

以輸入方式開啟檔案

ios::out0x0002

以輸出方式開啟檔案

ios::ate0x0004

開啟乙個已有檔案,將檔案指標定位於檔案尾部

0x0008

追加方式開啟檔案

ios::trunc0x0010

如果檔案存在,清除原有內容,否則建立新檔案

ios::nocreate0x0020

不建立新檔案,如果檔案不存在則開啟失敗

ios::noreplace0x0040

ios::binary0x0080

以二進位制方式開啟。預設方式

檔案的關閉使用close()成員函式。

舉個例子:

#include

#include

using namespace std;

intmain()

//...

file1.

close()

;return0;

}

3、檔案的讀寫

(1)、文字檔案讀寫

(2)、二進位制檔案讀寫

寫入:

舉個例子:

#include

#include

#include

using namespace std;

intmain()

,,};

file1.

open

("num.dat"

,ios:

:trunc|ios:

:binary);if

(!file1)

for(

int i =

0;i<

3;i++

) file1.

close()

;return0;

}

先看下輸出結果,這是個二進位制檔案,得用一些工具檢視,如下圖,01,02,03,…都已經寫了進去。顯然乙個int 型資料佔4個位元組。

file1.write((char*)&num_array[i],3*sizeof(int));這句中,首先num_array是乙個二維陣列名,num_array[i]就是二維陣列的第一行,然後對其取位址,並強制指標轉換,然後把連續的3個資料寫入。為社麼是(char*),這是因為函式原型是這樣的。

讀取

C 極簡總結 I O 流類庫(一)

在c 的輸入輸出系統中,最核心的是流 stream 流的操作包括對流的讀和寫。1 流類庫 c 將與輸入輸出有關的操作定義為乙個類體系,並將其放在乙個系統庫里,以備使用者呼叫。這個執行輸入和輸出操作的類體系就叫流類,實現流類的庫就是流類庫。流類庫的基本結構 類是istream類和ostream類的虛基...

c 極簡總結 STL deque

deque usually pronounced like deck is an irregular acronym of double ended queue 雙端陣列,可以對頭端和尾端進行插入刪除操作。1 deque與vector的頭插速度 2 deque 內部中控器 deque 內部有個中控器...

I O流類庫(一)

1.讀取單個字元 2.返回乙個整數 輸入字元的ascall碼值 get cahr 1.返回單個字元 2.返回乙個istream物件的引用 include using namespace std int main void getline 1.讀取一行 遇到回車鍵 2.返回istream物件的引用 3...