c++ - if ('fstream object' ) 如何根据文件是否打开返回真值或假值?

标签 c++ fstream

我很好奇 fstream class 是如何简单地返回一个 truefalse 值的将对象的名称放在条件语句中。例如……

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 faqC++ Operator Overloading Guidelines .

编辑: 有人向我指出 ios 还重载了 void * 转换运算符,在失败的情况下返回空指针。因此,您也可以使用该方法,该方法也包含在前面提到的常见问题解答中。

关于c++ - if ('fstream object' ) 如何根据文件是否打开返回真值或假值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10098230/

相关文章:

c++ - DBL_MIN 是最小的正 double 吗?

c++ - 我们如何将一个 100 GB 的文件拆分成一百个 1 GB 的文件?

c++ - 在 OS X 上使用 yaml-cpp 时出现问题

c++ - 尝试从每个预期数据之间有多个空格的文件中读取和存储数据

c++ - 使用 getline 从输入文件流中读取字符串和数字

c++ - C/C++ 警告 : address of temporary with BDADDR_ANY Bluetooth library

c++ - 如何使用任务栏按钮显示进度条?

c++ - 如何在 C++ 中读取不断增长的文本文件?

c++ - 使用 fstream 读取 Linux 设备

c++ - 读取C++中数据类型为Class的.dat文件,然后将每一行存储在Class类型的vector中