名前空間
変種
操作

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) [編集]
basic_filebuf オブジェクトを破棄し、ファイルが開いている場合は閉じます。
(virtual public member function) [編集]
English 日本語 中文(简体) 中文(繁體)