我想知道在什么情况下我们可以:
bool(std::ifstream) != std::ifstream::good()
不同之处在于bool(std::ifstream)
不测试eof
位,而std::ifstream::good()
测试它。但实际上,如果在文件结束后尝试读取某些内容,则会引发eof
位。但是一旦你尝试这样做,我认为fail
或bad
位也是设置的。
因此,在什么情况下你只能提高eof
位?
答案 0 :(得分:0)
简单地说,无论何时遇到文件的结尾而不试图在后面阅读。考虑一个文件“one.txt”,其中只包含一个“1”字符。
未格式化输入的示例:
#include <iostream>
#include <fstream>
int main()
{
using namespace std;
char chars[255] = {0};
ifstream f("one.txt");
f.getline(chars, 250, 'x');
cout << f.good() << " != " << bool(f) << endl;
return 0;
}
0!= 1
按任意键继续 。 。
格式化输入的示例:
#include <iostream>
#include <fstream>
int main()
{
using namespace std;
ifstream f("one.txt");
int i; f >> i;
cout << f.good() << " != " << bool(f) << endl;
return 0;
}
0!= 1
按任意键继续 。 。