我在我的应用程序旁边使用wget来下载jar并运行它。问题在于我当前的设置wget.exe必须保存在应用程序数据的一个文件夹中,这真的不聪明,即文件将如何开始?
那么无论从哪个目录运行,如何找到运行该应用程序的目录?
答案 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环境变量