如何获取程序运行的目录?

新手上路,请多包涵

是否有一种与平台无关和与文件系统无关的方法来获取使用 C/C++ 运行程序的目录的完整路径?不要与当前工作目录混淆。 (请不要推荐库,除非它们是标准库,如 clib 或 STL。)

(如果没有与平台/文件系统无关的方法,也欢迎在 Windows 和 Linux 中针对特定文件系统工作的建议。)

原文由 Ashwin Nanjappa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

这是获取执行应用程序的完整路径的代码:

视窗:

 char pBuf[256];
size_t len = sizeof(pBuf);
int bytes = GetModuleFileName(NULL, pBuf, len);
return bytes ? bytes : -1;

Linux:

 int bytes = MIN(readlink("/proc/self/exe", pBuf, len), len - 1);
if(bytes >= 0)
    pBuf[bytes] = '\0';
return bytes;

原文由 Mike 发布,翻译遵循 CC BY-SA 4.0 许可协议

以下对我来说在 macOS 10.15.7 上运行良好

brew install boost

主文件

#include <iostream>
#include <boost/filesystem.hpp>

int main(int argc, char* argv[]){
  boost::filesystem::path p{argv[0]};
  p = absolute(p).parent_path();
  std::cout << p << std::endl;
  return 0;
}

编译

g++ -Wall -std=c++11 -l boost_filesystem main.cpp

原文由 Tareq Saif 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题