C++ 如何获取std::filesystem::path中的最后一个目录?

C++ 如何获取std::filesystem::path中的最后一个目录?,c++,std-filesystem,C++,Std Filesystem,我有一个目录的路径,我想使用C++的std::filesystem获取该目录的名称。例如,如果路径为: std::filesystem::path fake_path("C:\\fake\\path\\to\\my_directory\\"); 我想得到“我的目录” 我已经看到并初步假设在boost::filesystem中起作用的东西在std::filesystem中不起作用,尽管这可能不正确。不管怎样,我不认为这是重复的,因为这是专门询问boost::filesystem和以文件结尾的路径

我有一个目录的路径,我想使用C++的
std::filesystem
获取该目录的名称。例如,如果路径为:

std::filesystem::path fake_path("C:\\fake\\path\\to\\my_directory\\");
我想得到“我的目录”

我已经看到并初步假设在
boost::filesystem
中起作用的东西在
std::filesystem
中不起作用,尽管这可能不正确。不管怎样,我不认为这是重复的,因为这是专门询问
boost::filesystem
和以文件结尾的路径

我可以想出其他几种解决方案,比如获取
伪路径.end()-2
,或者获取字符串并在分隔符上拆分,但没有一种方法像
伪路径.filename()
那样简单


是否有一种获取目录路径最后一部分的干净方法,大致相当于在文件路径上调用
.filename()

fake_path.parent_path().filename()

这回答了你的问题吗?我发现了这个问题(这是我链接的问题),但我已经尝试了
.filename()
,发现它对
std::filesystem
中的目录似乎不起作用,并假设它要么是
std
boost
之间行为上的差异,要么是因为路径末端有一个文件而起作用。然而,我现在不太确定。有意思。这是可行的,但我不知道为什么。似乎父路径结果仍然与原始路径有一些连接(而不仅仅等同于“C:\\fake\\path\\to\”),但处理“我的目录”“作为文件?
std::path
不知道该路径实际上是指向实际目录还是指向文件。它甚至可能包含一个不存在的路径。它基本上是一个标识符列表(表示每个目录名,以可能表示目录或文件的最终标识符结尾)。当有尾随(反)斜杠时,最终标识符为空字符串。调用
parent\u path
,将为您提供一个没有最后一个元素(这里是空字符串)的新路径。啊,好的,这很有意义。我想,有一个空的最终标识符是我遗漏的部分。