概要
在c++中,檔案被看作是字元的序列,即檔案是由乙個個的字元資料順序組成的。正因為c++檔案是乙個字元流,而不考慮記錄的界限,因此這種檔案稱為流式檔案。
按資料的儲存形式分類
二進位制檔案:把資料的內部儲存形式原樣存放到檔案中。(好處:無需儲存形式轉換,儲存效率高)
按資料的訪問方式分類順序檔案
隨機讀寫檔案
在c++ 中檔案被定義為檔案流類的乙個物件。
1、檔案流
c++ 中有三種檔案流,
2、檔案的開啟與關閉
檔案的開啟方式
標識常量值含義
ios::in
0x0001
以輸入方式開啟檔案
ios::out
0x0002
以輸出方式開啟檔案
ios::ate
0x0004
開啟乙個已有檔案,將檔案指標定位於檔案尾部
0x0008
追加方式開啟檔案
ios::trunc
0x0010
如果檔案存在,清除原有內容,否則建立新檔案
ios::nocreate
0x0020
不建立新檔案,如果檔案不存在則開啟失敗
ios::noreplace
0x0040
ios::binary
0x0080
以二進位制方式開啟。預設方式
檔案的關閉使用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...