C++では、std::ifstream open()
が成功する場合がありますが、std::ifstream good()
は間違っていますか?正常に開いていますが、うまくいきませんか?
EDIT:G ++ 4.7.1
#include <iostream>
#include <fstream>
int main(int argc, char *argv[])
{
std::ifstream filestream("testfile");
std::cout<<filestream.good()<<std::endl;
std::cout<<filestream.eof()<<std::endl;
std::cout<<filestream.fail()<<std::endl;
std::cout<<filestream.bad()<<std::endl;
return 0;
}
でテストが返されます:1、0、0、0をgood = TRUE
とeof = fail = bad = FALSE
を意味空のファイルのため。それは普通ですか?
+1読み込みを試みて読み込みが失敗するまで、実装は実際にファイルをテストしないかもしれません。 –
@DavidRodríguez-dribeas一般に、入力が失敗するまで、 'eofbit'をテストするのは意味がありません。 'std :: ifstream :: good()'が(他のステータスビットに加えて) 'eofbit'をテストするという事実は、それほど無価値です。 –
質問者には「良い」を使って何らかの害がないとは思いませんか? 'eofbit'が設定されていないので、ストリームを正常のように真実をテストすることもできます。無意味な何かを行う際に読みやすさに危害が及ぶと思われます。あなたが言うように、「良い」の使用は全く無意味です... –