std::basic_filebuf<CharT,Traits>::close
From 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_fstream のデストラクタによって呼び出されます)。
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 443 | C++98 | overflow(EOF) を使用してファイルが書き込まれた | overflow(Traits::eof()) に変更された |
| LWG 622 | C++98 | 閉じる際にスローされる 例外の処理方法が不明確だった |
ファイル閉鎖後に再スローされる |
[編集] 関連項目
| 関連付けられたファイルが開いているかどうかを確認します。 (public member function) | |
| [virtual] |
basic_filebuf オブジェクトを破棄し、ファイルが開いている場合は閉じます。(virtual public member function) |