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();
}
}
13
#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