这个程序:
#include <iostream>
#include <filesystem>
int main()
{
std::filesystem::path p1("c:\\");
std::filesystem::path p2("c:/");
if (p1.has_parent_path())
std::cout << "Parent path of " << p1 << " is " << p1.parent_path() << std::endl;
if (p2.has_parent_path())
std::cout << "Parent path of " << p2 << " is " << p2.parent_path() << std::endl;
}
产生这个输出:
Parent path of "c:\\" is "c:\\"
Parent path of "c:/" is "c:/"
(编辑:我对正斜杠的使用感到困惑,所以我更新了这段代码以显示无论您在 Windows 上使用哪种路径分隔符都会发生同样的事情)
这对我来说毫无意义。目录如何成为其自身的父级?如果它永远不会返回 false,那么即使有一个“has_parent”函数又有什么意义呢?
最重要的是:如果我正在编写递归搜索目录树以查找文件的代码,那么检测我已经点击根文件夹并应该停止的最佳/最可靠的方法是什么?
(如果重要的话,我在 C++17 语言模式下使用 Visual Studio 2019)