C++使用ifstream判断文件是否存在的问题
Question about deciding whether a file exists in C++ using ifstream
我找到了一个使用ifstream 来判断文件是否存在的c++ 代码。该部分是,
if (!ifstream(trajectory_file_name_)) {
cerr << "ERROR: The trajectory file:";
cerr << "3[1;34m";
cerr << trajectory_file_name_;
cerr << "3[0m";
cerr << " does not exist.";
cerr << endl;
exit(1);
}
我从课本上学到的(比如"c++ primer plus")是这样的,通过ifstream判断一个文件是否存在,
ifstream inFile(filename-);
if(!inFile.is_open())
{
return;
}
我搜索了很多网站,但没有找到关于第一个网站的任何信息。所以我想知道是否有人可以给我解释一下第一个的 ifstream 的用法。谢谢!
这归结为 streams convert to bool
(或者在本例中是由于 operator!
,但原理相同)。
简而言之,它的设计让您可以检查开放性 (and error flags),例如:
std::ifstream ifs("path");
if (!ifs)
{
// ...
}
(打开失败设置 failbit)。
您的版本只是跳过了声明并使用临时文件做同样的事情。
请注意,还有其他原因可能导致文件无法打开,例如权限。这不是检查它是否存在的可靠方法,即使存在,您也无法保证当您尝试使用它做某事时它仍然存在。
我找到了一个使用ifstream 来判断文件是否存在的c++ 代码。该部分是,
if (!ifstream(trajectory_file_name_)) {
cerr << "ERROR: The trajectory file:";
cerr << "3[1;34m";
cerr << trajectory_file_name_;
cerr << "3[0m";
cerr << " does not exist.";
cerr << endl;
exit(1);
}
我从课本上学到的(比如"c++ primer plus")是这样的,通过ifstream判断一个文件是否存在,
ifstream inFile(filename-);
if(!inFile.is_open())
{
return;
}
我搜索了很多网站,但没有找到关于第一个网站的任何信息。所以我想知道是否有人可以给我解释一下第一个的 ifstream 的用法。谢谢!
这归结为 streams convert to bool
(或者在本例中是由于 operator!
,但原理相同)。
简而言之,它的设计让您可以检查开放性 (and error flags),例如:
std::ifstream ifs("path");
if (!ifs)
{
// ...
}
(打开失败设置 failbit)。
您的版本只是跳过了声明并使用临时文件做同样的事情。
请注意,还有其他原因可能导致文件无法打开,例如权限。这不是检查它是否存在的可靠方法,即使存在,您也无法保证当您尝试使用它做某事时它仍然存在。