名稱空間
變體
操作

std::basic_filebuf<CharT,Traits>::close

來自 cppreference.com
< cpp‎ | io‎ | basic filebuf
 
 
 
 
std::basic_filebuf<CharT, Traits>* close();

如果存在放置區域(例如,檔案已開啟以進行寫入),則首先呼叫 overflow(Traits::eof()) 以將所有待定輸出寫入檔案,包括任何不轉換序列。

如果最近呼叫函式是 underflow(), overflow(), seekpos(), 和 seekoff() 中的 overflow(),則呼叫 std::codecvt::unshift(),可能多次,以根據所設定的區域設定確定不轉換序列,並使用 overflow(Traits::eof()) 將該序列寫入檔案。

然後,關閉檔案,如同呼叫 std::fclose() 一樣,無論之前的任何呼叫是否成功或失敗。

如果進行的任何函式呼叫,包括對 std::fclose() 的呼叫失敗,則返回空指標。如果進行的任何函式呼叫丟擲異常,則在關閉檔案後捕獲並重新丟擲該異常。如果檔案已經關閉,則立即返回空指標。

在任何情況下,都會更新由 is_open() 訪問的私有成員變數。

目錄

[編輯] 引數

(無)

[編輯] 返回值

成功時返回 this,失敗時返回空指標。

[編輯] 注意

close() 通常透過 std::basic_filebuf 的解構函式呼叫(而 std::basic_filebuf 的解構函式又通常由 std::basic_fstream 的解構函式呼叫)。

[編輯] 示例

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 443 C++98 檔案使用 overflow(EOF) 寫入 更改為 overflow(Traits::eof())
LWG 622 C++98 不清楚如何處理
關閉期間丟擲的異常
在關閉檔案後重新丟擲

[編輯] 參閱

檢查關聯檔案是否開啟
(public member function) [編輯]
銷燬一個 basic_filebuf 物件,如果檔案已開啟則關閉它
(virtual public member function) [編輯]