如何检查C+中是否存在文件+;? < >我想确定一个文件是否存在于C++ 11 中

如何检查C+中是否存在文件+;? < >我想确定一个文件是否存在于C++ 11 中,c++,c++11,C++,C++11,我有以下代码: ifstream inputFile(c); if (!inputFile.good()) { std::cout << "No file found" << '\n'; } 哪一个是正确的和惯用的 如果您试图使用C++11确定文件是否存在,您可能想试试这个想法 #include <iostream> #include <fstream> int main(int argc, char *

我有以下代码:

ifstream inputFile(c);

if (!inputFile.good()) {
        std::cout << "No file found" << '\n';           
}

哪一个是正确的和惯用的

如果您试图使用C++11确定文件是否存在,您可能想试试这个想法

#include <iostream>
#include <fstream>

int main(int argc, char *argv[]){
    std::ifstream file("myfile.txt");
    if(!file.is_open()){
        std::cout << "File not found" << std::endl;
        return -1;
    }

    return 0;
}
#包括
#包括
int main(int argc,char*argv[]){
std::ifstream文件(“myfile.txt”);
如果(!file.is_open()){
std::cout在C++17中,您可以使用
执行以下操作:

namespace fs = std::filesystem;
fs::path f{ "file.txt" };
if (fs::exists(f)) std::cout << "yes";
else               std::cout << "nope";
名称空间fs=std::filesystem;
路径f{“file.txt”};

如果(FS::F())STD:::CUD C++使用什么版本(<代码> C++ 11 < /代码>,<代码> C++ 14 > /代码>,…)?解决方案可能会有不同的地方。@ DrCukNAMLY编辑,C++ 11中提到:如果你有C++ 17,那么代码> STD::文件系统::存在< /COD>。你的意图是检查文件是否可读。如果这个文件存在,它与测试是有点不同的;它可能存在,但是你的进程可能不存在。能够读取其内容(权限…)。第一个看起来更好。如果可以直接检查文件是否正确打开,为什么要检查与任意文件相关的函数是否返回错误。请使用
“/etc/shadow”
“/etc/sudoers”尝试此操作
;^)虽然这只是一个常见的解决方案,但如果您的解决方案不具体,我会尝试在最近完成IO操作时,std::basic_ios::good返回true,这可能不是正确的或合适的解决方案。除非您有要实现的目标,并且可能没有正确地提出问题。这不是真正重要的ortant,只是一个词汇问题。我认为文件存在与否与该文件可读与否不同。您的示例测试该文件是否可读,如果失败,则得出结论认为未找到该文件。该文件可能确实存在,但不可读(由于权限原因)所以我想说这个文件是不“可读的”。(没什么大不了的…)
namespace fs = std::filesystem;
fs::path f{ "file.txt" };
if (fs::exists(f)) std::cout << "yes";
else               std::cout << "nope";