如何判断在C ++中运行应用程序的位置

时间:2012-03-31 07:11:22

标签: c++ visual-c++ wget

我在我的应用程序旁边使用wget来下载jar并运行它。问题在于我当前的设置wget.exe必须保存在应用程序数据的一个文件夹中,这真的不聪明,即文件将如何开始?

那么无论从哪个目录运行,如何找到运行该应用程序的目录?

3 个答案:

答案 0 :(得分:3)

for windows:

std::string calculateRunPath()
{
  const unsigned int size = 500;
  char buf[size] = {0};
  HMODULE hModule = GetModuleHandle(NULL);
  GetModuleFileName(hModule,buf, sizeof(buf));

  std::string path(buf);
  size_t pos = path.find_last_of('\\');

  return path.substr(0, pos);
}

for Linux:

std::string calculateRunPath()
{
   const unsigned int size = 500;
   char path[size + 1] = {0};  

   size_t len = readlink("/proc/self/exe", path, size);
   path[len]   = 0;
   char* p = strrchr(path, '/');
   if(p) 
      *(p + 1) = 0;
   else 
      path[0] = 0;

   return std::string(path);
}

答案 1 :(得分:1)

一些提升文件系统的好处也应该有效,比如......

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

int main()
{
  std::cout << boost::filesystem::current_path().string() << std::endl;
  return 0;
}

答案 2 :(得分:0)

您必须阅读PWD环境变量