我找到了一个c ++代码,该代码使用ifstream来确定文件是否存在。该部分是
if (!ifstream(trajectory_file_name_)) {
cerr << "ERROR: The trajectory file:";
cerr << "\033[1;34m";
cerr << trajectory_file_name_;
cerr << "\033[0m";
cerr << " does not exist.";
cerr << endl;
exit(1);
}
我从教科书中学到的东西(例如“ c ++ primer plus”)类似于判断通过ifstream是否存在文件时的情况,
ifstream inFile(filename-);
if(!inFile.is_open())
{
return;
}
我搜索了许多网站,但没有找到第一个网站的任何信息。所以我想知道是否有人可以给我一些有关第一个ifstream用法的解释。谢谢!
答案 0 :(得分:3)
这取决于streams convert to bool
的方式(或者在这种情况下,这是由于operator!
造成的,但原理相同)。
经过精心设计,您可以简短地检查开放性(and error flags),如下所示:
std::ifstream ifs("path");
if (!ifs)
{
// ...
}
(打开失败设置失败位)。
您的版本只是跳过声明,并使用临时版本执行相同的操作。
请注意,还有其他原因导致文件无法打开,例如权限。这不是检查它是否存在的可靠方法,即使存在,您也无法保证在尝试对其进行处理时仍会存在。