gpt4 book ai didi

c++ - 在什么实际情况下 bool(std::ifstream) != std::ifstream::good()?

转载 作者:太空狗 更新时间:2023-10-29 23:17:44 26 4
gpt4 key购买 nike

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

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

区别在于 bool(std::ifstream) 不测试 eof 位,而 std::ifstream::good() 测试它。但实际上,如果试图读取文件末尾后的内容,则会引发 eof 位。但是一旦您尝试这样做,我认为 failbad 位也已设置。

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

最佳答案

简单地说,每当您遇到文件末尾而没有尝试读取它的后面时。考虑一个文件“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
Press any key to continue . . .

格式化输入示例:

#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
Press any key to continue . . .

关于c++ - 在什么实际情况下 bool(std::ifstream) != std::ifstream::good()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com