如何在C++(C++11/14/17)中快速检查文件是否存在?
大家好!我写C++已经大约一年了,但至今仍找不到一个明确的最佳方法来检查磁盘上的文件是否存在。问题在于我需要非常频繁地执行此操作——在循环中处理数百个文件,每一毫秒都很关键。
目前我使用这样的代码:
#include
bool fileExists(const std::string& filename) {
std::ifstream f(filename.c_str());
return f.good();
}
它能工作,但我怀疑这不是最快的方式,因为它会完整地打开文件。我也尝试过使用`stat()`:
#include
bool fileExists(const std::string& name) {
struct stat buffer;
return (stat(name.c_str(), &buffer) == 0);
}
但这是平台相关的代码(Windows不支持`stat`,除非使用额外的宏)。我听说C++17中有了`std::filesystem`,但不确定它有多快。
问题:哪种方法最快且