標頭檔案#include
ifstream //
以讀取方式開啟,預設模式為
ios::in
ofstream //
以寫入方式開啟,預設模式為
ios::out|ios::trunc(
類似fopen的w
與w+)
fstream //
以讀寫方式開啟,預設模式為
ios::out|ios::in
關於函式的內容中預設已定義
fstream file(「……」);
實際應為
fstream &.get();
這種形式才對
預設建構函式為.open(),例:
fstream file(「1.txt」); //
效果等同
fstream file; file.open(「1.txt」);
開啟模式有以下幾種:
ios::in 以輸入(讀)方式開啟檔案;
ios::out 以輸出(寫)方式開啟檔案;
os::ate 初始位置:檔案尾,檔案開啟後定位到檔案尾;
ios::trunc 如果檔案已存在則先刪除該檔案;
ios::binary 二進位制方式,以二進位制方式開啟檔案;
ios::nocreate 開啟乙個檔案時,如果檔案不存在,不建立檔案;
ios::noreplace 開啟乙個檔案時,如果檔案不存在,建立該檔案;
可以以多種模式開啟檔案,開啟模式為列舉變數,值為0x01、0x04、0x08等,轉為二進位制後相隔乙個位,所以可以用『|』或者『+』運算子來進行多模式並用,例
以附加寫方式開啟檔案
可通過流操作符」<<」來對檔案流變數進行操作,預設以文字方式開啟,若以文字模式流入資料到檔案,資料會被格式化為字元格式,如
int i=100;
char str[20]=」hello」;
ofstream file(「1.txt」);
file << i; //
執行後檔案
1.txt
內會有文字內容「
100」
file << str; //
執行後檔案
1.txt
內會有文字內容「
hello
」若以讀方式開啟檔案,有多個函式可以對開啟的檔案流進行操作,如
char i;
chat str[20];
ifstream file(「1.txt」);
file.get(i); //
效果跟cin.get相似,
此處等效於
i=file.get()
但返回值不一樣
file.get(str,10,』\n』);
同樣可以跟
cin.get
一樣,最多傳入三個引數
(型別也相同
)file.getline(str,10,』\n』);
也跟cin.getline()
相似,最後乙個結束符預設為『\n』
會把結束符清除
,下一局不會讀到結束符,而
get則會
//留下結束符給下一次讀取
file.get()與file.getline()的不同
message中的內容為:
小明 12 f
小紅 11 m
char str[100];
std::ifstreamfile("./message.txt");
file.get(str,100);
std::cout << str;
std::cout << "next:\n" ;
file.getline(str,100,'~');
std::cout << str;
輸出結果為以下
小明 12 fnext:
小紅 11 m
若把file.get(str,100);
改為file.getline(str,100);
輸出結果則是
小明 12 fnext:
小紅 11 m
可以理解為getline的檔案游標比get偏移了一位;
當傳入兩個引數時,例
file.get(str,10); //
預設回車符結束,當超出
10個字元後,超出內容仍留在緩衝區給
//下一次讀取
file.getline(str,10); //
當超出10
個字元後,超出內容會保留在緩衝區,並且關閉檔案流提取(關閉緩衝區輸出),後面的
get或者
getline
將無法接受超出的內容,可用
file.clear();
重置狀態
file.get()
、file.getline()
的非法操作以及返回值跟
cin.get
、cin.getline
一樣,分別是讀取不到任何東西,僅有
』\0』
,以及讀取到的內容超出指定數目;
其他函式:
fstream file(「1.txt」);
file.seekg(10,ios::beg); //
檔案游標以檔案頭為原點偏移
10位,
ios::end
為檔案尾。
ios::cur
為當前位置(向後偏移)
file,good(); //
開啟檔案成功則返回
1,失敗則為0;
file.eof(); //
游標當前位置是否位於檔案尾(是否讀到檔案尾)
,是則返回
1,否則返回0;
參考**:
C 檔案流操作
include stdafx.h include include include include include using namespace std void writecharsettofile const string filename void outputfile const strin...
C 檔案流操作
c 的檔案流本質是利用了乙個buffer中間層,有點類似標準輸出和標準輸入一樣。需要包含的標頭檔案 fstream.h 需要的命名空間 std fstream提供了三個類,用來實現c 對檔案的操作,以下對其做個簡要概述。1.ifstream類 2.ofstream類 3.fstream類 支援的檔案...
C 流檔案操作
c 流檔案操作 開發工具與關鍵技術 visual studio c 流檔案操作 流檔案的基本操作 1.開啟檔案 2.進行讀或者寫的操作 3.關閉檔案 計算機中各種應用系統都把一些資訊組織起來放在外部儲存器,這種組織被稱為檔案,並用檔名作為標識。c 中檔案作為無結構的位元組流 編碼方式 文字方式 二進...