オペレーターでファイルのオープンが成功したことを確認できることを知っています! std::fstream クラスのメンバー関数 fail() 。
しかし、この目的のためにメンバー関数bad()も使用できますか? 規格に適合しているかどうか
オペレーターでファイルのオープンが成功したことを確認できることを知っています! std::fstream クラスのメンバー関数 fail() 。
しかし、この目的のためにメンバー関数bad()も使用できますか? 規格に適合しているかどうか
この関数は、「回復不能なエラー」をbad()生成します-それが意味するものは何でも。true基本的に、bad()何らかの形式のフォーマットエラーとは異なる理由で何かが失敗するたびに設定されます。興味深いことに、open()さまざまなファイルストリームクラス(、、、および)の機能はstd::ofstreamすべてstd::ifstream、std::fstreamファイルstd::ios_base::failbitバッファに障害が発生したときに設定されopen()ます。つまりstream.bad()、失敗したかどうかをテストするために使用することはできませopen()ん。を使用できますstream.fail()。個人的には、私はわざわざ変換を使用しませんbool:
std::ofstream out("file");
if (out) {
process();
}
else {
report_error();
}
はい、できios::bad()ます。 a を返し、boolean単に!否定しますboolean(つまり、true->falseおよびその逆)。
それがあなたが意図していることかどうかは別の問題です。bad()オープンの失敗ではなく、ストリームの完全性の喪失をチェックします。