如何检查文件是不是存在于 C++ 中? [复制]
Posted
技术标签:
【中文标题】如何检查文件是不是存在于 C++ 中? [复制]【英文标题】:How to check if a file exists in C++? [duplicate]如何检查文件是否存在于 C++ 中? [复制] 【发布时间】: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
就在那里。
我猜你的意图是检查文件是否可以被你的进程读取。这与仅测试此文件是否存在有点不同;它可能存在,但您的进程可能无法读取其内容(权限...)。
第一个看起来更好。为什么要检查任意文件相关函数是否返回错误,如果可以直接检查文件是否正确打开。
【参考方案1】:
如果您尝试使用 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;
【讨论】:
试试"/etc/shadow"
或"/etc/sudoers"
;^)
虽然这只是一个常见的解决方案,但如果您的解决方案不具体
好的,我会试试的
std::basic_ios在 C++17 中,您可以使用 <filesystem>
进行操作:
namespace fs = std::filesystem;
fs::path f "file.txt" ;
if (fs::exists(f)) std::cout << "yes";
else std::cout << "nope";
【讨论】:
以上是关于如何检查文件是不是存在于 C++ 中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
当用户在flutter中使用otp方法登录时,如何检查用户详细信息是不是已经存在于firebase中? [复制]