我很好奇 fstream
class
是如何简单地返回一个 true
或 false
值的将对象的名称放在条件语句中。例如……
std::fstream fileStream;
fileStream.open("somefile.ext");
if (!fileStream) // How does this work?
std::cout << "File could not be opened...\n";
我问这个是因为如果我以类似的方式使用它,我希望我自己的类返回一个值。
最佳答案
它并不是真的等于真或假,而是它重载了 !
运算符以返回其状态。
参见 http://www.cplusplus.com/reference/iostream/ios/operatornot/了解详情。
自己做这个很简单,查看 operator overloading faq或 C++ Operator Overloading Guidelines .
编辑:
有人向我指出 ios
还重载了 void *
转换运算符,在失败的情况下返回空指针。因此,您也可以使用该方法,该方法也包含在前面提到的常见问题解答中。
关于c++ - if ('fstream object' ) 如何根据文件是否打开返回真值或假值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10098230/