我在阅读中看到这段代码:
void assure(std::ifstream& infile ) {
if(!infile) { /* stuff */}
}
出于好奇,我使用函数参数类型 ifstream&
和 ifstream
进行了测试,它似乎有效。我很好奇条件表达式是如何工作的。这是 NULL 对象还是空对象的情况?我认为 C++ 对象不能为 NULL?
由于 !infile
有效,失败的 ifstream
对象如何表示?
感谢您的启发。
最佳答案
它使用 negate operator , 它只是 Hook 到 fail()
检查。
它并不完全与 good()
相反,因为它还检查 EOF (eofbit
)。
(是的,引用总是指向一个对象,这个问题没有意义,只有指针可以为 NULL)。
关于c++ - 给定 : ifstream infile ("test.txt") is there advantage to use if(! infile)... 与 if(infile.good())...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15177379/