获取可执行文件的路径(使用 std::filesystem)

Bar*_*ack 9 c++ c++17 std-filesystem

在我被标记为重复之前,我能找到的所有类似问题在引入 std::filesystem 之前都有答案,并且使用特定于平台的代码或 Boost::filesystem。我正在寻找一个使用 std::filesystem 的便携式答案。


是否可以使用 std::filesystem 获取 C++ 可执行文件所在的路径(而不是工作目录)?如果是的话,怎么样?

πάν*_*ῥεῖ 7

不,标准文件系统设施中没有提供任何内容来获取可执行文件的路径。

即使使用第一个argv参数也不能保证包含可执行文件的完整路径。
我知道的系统只会传递用于启动程序的字符串。
考虑到这可以使用PATH环境变量来解决,所以不能保证您会看到完整路径。

不过,有一些操作系统特定的方法可以做到这一点:

  • @Galik当前工作目录与可执行文件的路径完全无关。 (6认同)