【发布时间】:2020-03-20 05:05:59
【问题描述】:
我想确定一个文件是否存在于 C++ 11 中
我有以下代码:
ifstream inputFile(c);
if (!inputFile.good()) {
std::cout << "No file found" << '\n';
}
和
if (inputFile.peek() == std::ifstream::traits_type::eof()){
....
}
哪一个是正确的和惯用的?
【问题讨论】:
-
您使用的是哪个版本的 C++(
c++11、c++14、...)?建议的/“最惯用的”解决方案可能会有所不同。 -
@druckernamly 已编辑,c++ 11
-
只是提一下:如果你可以访问 C++17,那么
std::filesystem::exists就在那里。 -
我猜你的意图是检查文件是否可以被你的进程读取。这与仅测试此文件是否存在有点不同;它可能存在,但您的进程可能无法读取其内容(权限...)。
-
第一个看起来更好。为什么要检查任意文件相关函数是否返回错误,如果可以直接检查文件是否正确打开。