public member function
<fstream>

std::basic_ofstream::open

void open (const char* filename,  ios_base::openmode mode = ios_base::out);
void open (const   char* filename,  ios_base::openmode mode = ios_base::out);void open (const string& filename,  ios_base::openmode mode = ios_base::out);
開啟檔案
開啟由引數 filename 標識的檔案,並將其與流物件關聯,以便對檔案的內容執行輸入/輸出操作。引數 mode 指定了開啟模式

如果流已與檔案關聯(即,它已開啟),則呼叫此函式失敗。

流的檔案關聯由其內部流緩衝區維護。
內部呼叫 rdbuf()->open(filename,mode)

如果失敗,函式會將 failbit 設定到流中。
成功時,函式會清除流的狀態標誌(將其設定為 goodbit)。
失敗時,會設定 failbit

引數

filename
包含要開啟的檔案的名稱的字串。
有關其格式和有效性的具體說明取決於庫實現和執行環境。
mode
描述檔案請求的輸入/輸出模式的標誌。
這是一個位掩碼成員型別 openmode 的物件,由以下成員常量的組合構成:
成員常量代表access
in輸入檔案以讀模式開啟:內部流緩衝區支援輸入操作。
下可用的型別 *輸出檔案以寫模式開啟:內部流緩衝區支援輸出操作。
binarybinary操作以二進位制模式執行,而非文字模式。
ate在末尾輸出位置從檔案末尾開始。
appappend (追加)所有輸出操作都在檔案末尾進行,追加到其現有內容。
trunctruncate (截斷)檔案開啟前存在的任何內容都將被丟棄。
這些標誌可以透過按位或運算子(|)組合。
* 對於 basic_ofstream 物件,out 總是被設定(即使在引數 mode 中未顯式設定)。
請注意,即使 basic_ofstream 是輸出流,其內部的 basic_filebuf 物件也可以設定為支援輸入操作。

如果模式同時設定了 truncapp,則開啟操作失敗。如果同時設定了 appin,也會失敗。
如果模式同時設定了 truncapp,則開啟操作失敗。

返回值



如果函式未能開啟檔案,則流的 failbit 狀態標誌會被設定(如果使用成員 exceptions 註冊了該狀態以丟擲異常,則可能丟擲 ios_base::failure)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// ofstream::open / ofstream::close
#include <fstream>      // std::ofstream

int main () {

  std::ofstream ofs;
  ofs.open ("test.txt", std::ofstream::out | std::ofstream::app);

  ofs << " more lorem ipsum";

  ofs.close();

  return 0;
}

資料競爭

修改 basic_ofstream 物件。
對同一物件的併發訪問會引入資料競爭。

異常安全

基本保證:如果丟擲異常,處於有效狀態。
如果函式失敗(設定了 failbit 狀態標誌)並且成員 exceptions 被設定為針對該狀態丟擲異常,則該函式將丟擲成員型別為 failure 的異常。

另見