繁体   English   中英

检查目录是否存在使用<filesystem></filesystem>

[英]Check if directory exists using <filesystem>

我有一个包含某个文件路径的字符串。 该文件不需要存在(在我的 function 中可以创建),但必须存在该目录。 所以我想使用图书馆检查它。 我试过这段代码:

std::string filepath = {"C:\\Users\\User\\test.txt"};
bool filepathExists = std::filesystem::exists(filepath);

此外,路径是绝对的。 例如,对于“C:\Users\User\file.txt”,我想检查“C:\Users\User”是否存在。 我曾尝试使用迭代器构造一个字符串:从“\”的开头到最后一次出现,但它非常粗略的解决方案,如果路径仅包含文件名,我会得到异常。

因此,有人可以提供更优雅的方式吗?

这听起来像是std::filesystem::weakly_canonical的工作。 它可以规范化路径,即使完整路径不(尚)存在。

然后,您可以在结果上调用.parent_path以获取父目录的绝对路径,并检查该路径是否存在。

@ach 提供的答案:

std::filesystem::path filepath = std::string("C:\\Users\\User\\test.txt");
bool filepathExists = std::filesystem::is_directory(filepath.parent_path());

它检查“C:\Users\User”是否存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM