首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断应用程序在C++中的运行位置

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

Stack Overflow用户
提问于 2012-03-31 15:11:22
回答 3查看 148关注 0票数 2

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

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

EN

回答 3

Stack Overflow用户

发布于 2012-03-31 22:32:45

对于windows:

代码语言:javascript
复制
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);
}

对于Linux:

代码语言:javascript
复制
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);
}
票数 3
EN

Stack Overflow用户

发布于 2012-03-31 15:43:04

一些提升文件系统的优点也应该起作用,比如...

代码语言:javascript
复制
#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;
}
票数 1
EN

Stack Overflow用户

发布于 2012-03-31 15:17:20

您必须读取PWD环境变量

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9953859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档