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

Wit*_*had 5 c++ std-filesystem

我有一个目录的路径,我想使用 C++ 的std::filesystem. 例如,如果路径是:

std::filesystem::path fake_path("C:\\fake\\path\\to\\my_directory\\");
Run Code Online (Sandbox Code Playgroud)

我想得到“my_directory”。

我已经看到了这个答案,最初认为在 中起作用的内容在boost::filesystem中不起作用std::filesystem,尽管这可能不正确。无论哪种方式,我都不相信这是重复的,因为那个人专门询问boost::filesystem并以文件结尾的路径。

我可以想到其他几种解决方案,例如获取fake_path.end() - 2或获取字符串并在分隔符上拆分,但没有一个像fake_path.filename()以前那样简单。

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

Nic*_*art 6

您可以使用以下方法获取它:

fake_path.parent_path().filename()
Run Code Online (Sandbox Code Playgroud)

  • `std::path` 不知道路径是否实际指向实际目录或文件。它甚至可能包含一条不存在的路径。它基本上是一个标识符列表(代表每个目录名称,以可能代表目录或文件的最终标识符结尾)。当有尾部(反)斜杠时,最终标识符是空字符串。调用“parent_path”,为您提供一个没有最终元素(此处为空字符串)的新路径。 (4认同)