c中檔案的openmode如下:r唯讀
為輸入開啟乙個文字檔案
w只寫為輸出開啟乙個文字檔案
a追加向文字檔案尾新增資料
rb唯讀
為輸入開啟乙個二進位制檔案
wb只寫
為輸出開啟乙個二進位制檔案
ab追加
向二進位制檔案尾新增資料
r+讀寫
為讀寫開啟乙個文字檔案
w+讀寫
為讀寫新建乙個新的文字檔案
a+讀寫
為讀寫開啟乙個文字檔案,並在檔案尾進行寫入
rb+讀寫為讀寫開啟乙個二進位制檔案
wb+讀寫為讀寫新建乙個二進位制檔案
ab+讀寫為讀寫開啟乙個二進位制檔案,並在檔案尾進行寫入
/*其中的mods和valid是對應的,分別代表c和c++中檔案的openmode,即下面的函式是在vs中單步除錯時得到的,具體操作是在fp.open()這裡打個斷點,然後單步除錯(f11)
這裡體現了c中和c++開啟檔案的各種模式的對應關係,即mods和valid中的元素是一一對應的
*/_crtimp2_pure file *__clrcall_pure_or_cdecl _fiopen(const _sysch_t *filename,
ios_base::openmode mode,
intprot)
;static
const
int valid =;
file *fp = 0
;
intn;
ios_base::openmode atendflag = mode &ios_base::ate;
ios_base::openmode norepflag = mode &ios_base::_noreplace;
if (mode &ios_base::_nocreate)
mode |= ios_base::in; //
file must exist
mode |= ios_base::out; //
mode &= ~(ios_base::ate | ios_base::_nocreate |ios_base::_noreplace);
for (n = 0; valid[n] != 0 && valid[n] != mode; ++n)
;
//look for a valid mode
if (valid[n] == 0
)
return (0); //
no valid mode
else
&& (fp = _xfsopen(filename, _sysch("
r"), prot)) != 0
)
else
if (fp != 0 && fclose(fp) != 0
)
return (0); //
can't close after test open
else
if ((fp = _xfsopen(filename, mods[n], prot)) == 0
)
return (0); //
open failed
if (!atendflag || fseek(fp, 0, seek_end) == 0
)
return (fp); //
no need to seek to end, or seek succeeded
fclose(fp);
//can't position at end
return (0
); }
下面看c++中檔案操作的openmode
ios::in
開啟檔案進行讀操作,如果檔案不存在,則開啟失敗
ios::out
開啟檔案進行寫操作,如果檔案不存在,則自動建立新檔案[注1、注2]
ios::ate
開啟檔案時,指標定位到檔案末尾(但可以通過seekg/seekp來調節指標位置,從而在指定位置寫入資料)
ios::trunc
開啟檔案時清空原有資料
ios::binary
以二進位制形式開啟檔案,如未設定,則預設以文字形式開啟檔案
最後,ofstream, ifstream 和 fstream所有這些類的成員函式open 都包含了乙個預設開啟檔案的方式,這三個類的預設方式各不相同:
類預設openmode
ofstream
ios::out
ifstream
ios::in
fstream
ios::in | ios::out
注:1.只有當函式被呼叫時沒有宣告方式引數的情況下,預設值才會被採用。如果函式被呼叫時宣告了任何引數,預設值將被完全改寫,而不會與呼叫引數組合。
2.ofstream的預設openmode為ios::out,結合前面所講,其實是ios::out | ios::trunc,且如果檔案不存在會自動建立檔案
3.fstream的預設openmode為ios::in | ios::out,結合前面所講,此時不會清空檔案,且如果不存在也不會自動建立檔案
檔案的操作
在檔案操作之前要匯入命名空間 system.io 讀寫檔案的步驟分為5步 1 建立檔案流 語法 filestream fd new filestream 檔案路徑 filemode 其中 filemode 是列舉型別的,列舉型別的主要作用是約定乙個變數的值的範圍 其中包括有 create 用指定名稱...
檔案的操作
openopen 內建函式,open底層呼叫的是作業系統的介面 f1,變數.f1,fh,file,file handler,f h 檔案控制代碼.通過對檔案的任何操作都會通過檔案控制代碼.的方式.encoding 可以不寫,不寫引數,預設編碼本.預設編碼本 作業系統的預設的編碼 檔案控制代碼 是乙個...
檔案的操作
只要牽扯到檔案的操作,都是字串 開啟檔案用到 w 原始檔內容會被清空 相當於新建 sprip 取消換行符 換行符2個位元組 一 開啟 win gbk mac linux utf 8 f open 歌詞 f 檔案操作符 檔案控制代碼 檔案操作物件 習慣叫 f file f obj f handler ...