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) | |
[virtual] |
銷燬一個 basic_filebuf 物件,如果檔案已開啟則關閉它(virtual public member function) |