public member function
<fstream>

std::basic_fstream::open

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

如果流已關聯到一個檔案(即它已經開啟),呼叫此函式將失敗。

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

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

引數

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

如果模式同時設定了 truncapp,則開啟操作失敗。如果僅設定了其中一個但未設定 out,或者同時設定了 appin,則也失敗。
如果模式同時設定了 truncapp,則開啟操作失敗。如果設定了 trunc 但未設定 out,操作也會失敗。

返回值



如果函式未能開啟檔案,則為流設定 failbit 狀態標誌(如果該狀態標誌已透過成員 exceptions 註冊,則可能會丟擲 ios_base::failure)。

示例

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

int main () {

  std::fstream fs;
  fs.open ("test.txt", std::fstream::in | std::fstream::out | std::fstream::app);

  fs << " more lorem ipsum";

  fs.close();

  return 0;
}

資料競爭

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

異常安全

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

另見