首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 基礎

C++ 檔案開啟與關閉全攻略:模式組合與錯誤處理

     編輯:C++ 基礎

開啟檔案的兩種等價方式

方式一:分步驟

ofstream outfile;          // 1. 宣告物件
outfile.open("f1.dat", ios::out); // 2. 關聯檔案、指定模式

方式一:建構函式一步到位(推薦)

ofstream outfile("f1.dat", ios::out);

完整模式旗標表

旗標含義
ios::in輸入模式開啟
ios::out輸出模式(預設),截斷既有檔案
ios::app輸出模式,資料追加至檔案尾
ios::ate開啟既有檔案,指標直指檔尾
ios::trunc截斷既有檔案(配合 out 為預設行為)
ios::binary二進位模式(預設為文字模式)
ios::nocreate僅開啟既有檔案,不建立新檔(舊標準,新版已移除)
ios::noreplace檔案不存在才建立,存在則失敗(舊標準,新版已移除)

模式組合:位元或運算子 |

禁忌:不可組合互斥旗標(如 nocreate | noreplace)。

錯誤檢測:務必驗證開啟結果

ofstream outfile("f1.dat", ios::app);
if (!outfile) {           // 或 outfile.fail()
    cerr << "開啟失敗!" << endl;
    exit(1);              // 或 abort()
}

建構函式失敗時,物件轉型為 false;open() 失敗回傳 0。

關閉檔案與重複利用流物件

outfile.close();           // 解除關聯、釋放資源、刷新緩衝區
outfile.open("f2.dat", ios::app | ios::nocreate); // 同一物件關聯新檔案

檔案指標初始位置規則

  • ios::out / ios::trunc:指標指向檔案開頭(內容被清空)
  • ios::app:指標固定在檔尾,每次寫入自動移至末尾
  • ios::ate:指標初始在檔尾,但可自由移動
  • ios::in:指標在檔頭

讀寫每處理一個位元組,指標後移一位;遇 EOF(-1)則 eof() 回傳真值。

總結

掌握模式旗標組合、嚴謹檢查開啟狀態、善用 close() 釋放資源並重複利用流物件,是穩健檔案 I/O 程式的基石。新標準下建議摒棄 nocreate/noreplace,改用檔案系統層面檢查(std::filesystem::exists C++17)替代。

  1. 上一篇文章:
  2. 下一篇文章:
  • --热点文章
  • Copyright © 程式碼之家 All Rights Reserved