Namespaces
Variants

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

From cppreference.net
std:: basic_filebuf < CharT, Traits > * close ( ) ;

書き込み用にファイルが開かれている場合など、プットエリアが存在する場合、まず overflow ( Traits :: eof ( ) ) を呼び出して、未処理の出力(アンシフトシーケンスを含む)をすべてファイルに書き込みます。

直前に呼び出された関数が underflow() overflow() seekpos() 、および seekoff() の中で overflow() であった場合、 std::codecvt::unshift() を(必要に応じて複数回)呼び出して設定されたロケールに従ってアンシフトシーケンスを決定し、そのシーケンスを overflow ( Traits :: eof ( ) ) を使用してファイルに書き込みます。

その後、前述の呼び出しの成功・失敗に関わらず、 std::fclose() を呼び出すかのようにファイルを閉じます。

関数呼び出し( std::fclose() の呼び出しを含む)のいずれかが失敗した場合、nullポインタを返します。関数呼び出し中に例外がスローされた場合、ファイルを閉じた後に例外をキャッチして再スローします。ファイルが既に閉じられている場合は、直ちにnullポインタを返します。

いずれの場合も、 is_open() によってアクセスされるプライベートメンバ変数を更新します。

目次

パラメータ

(なし)

戻り値

this 成功時は、失敗時はnullポインタ。

注記

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)