basic_filebuf* close();
概要
put領域をクリアし、ファイルを閉じる
効果
is_open()の呼び出し結果がfalseの場合、nullptrを返す。
put領域が存在する場合(ファイルを開いているなどして)、overflow(traits::eof())を呼び出してフラッシュする。
仮想メンバ関数underflow, overflow, seekoff, seekposのうち、最後に呼ばれたのがoverflowの場合、std::codecvt::unshift()を呼び出し、再びoverflow(traits::eof())を呼び出してフラッシュする。
最後にあたかもfcloseを呼び出したかのように振る舞う。
上記に書いたfcloseを含む関数呼び出しのいずれかで失敗があった場合、nullptrを返す。ただし例外が発生した場合は一度捕捉しファイルを閉じたあとに例外を投げ直す。
戻り値
成功したらthisを返す。それ以外の場合はnullptrを返す
事後条件
この関数を呼び出したあとは、is_openの呼び出し結果はcloseが成功したか否かに関わらずfalseになる
例
#include <iostream>
#include <fstream>
int main()
{
std::fstream fs;
std::filebuf* buf = fs.rdbuf();
if (buf->open("foo", std::ios_base::out)) {
buf->close();
}
}
バージョン
言語
- C++98