3

我想知道在什么情况下我们可以拥有:

bool(std::ifstream) != std::ifstream::good()

不同之处在于bool(std::ifstream)不测试eof位而std::ifstream::good()测试它。但实际上,eof如果尝试在文件结束后读取某些内容,则会引发该位。但是,一旦您尝试这样做,我认为也设置了failor 或bit 。bad

因此在什么情况下你只能提高eof位?

4

1 回答 1

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
按任意键继续。. .

于 2013-05-15T09:04:20.500 回答