我對C++的應用程序,我怎樣才能得到我的完整目錄(其中該應用程序的.exe文件存在)?
編輯:操作系統 - 視窗
我對C++的應用程序,我怎樣才能得到我的完整目錄(其中該應用程序的.exe文件存在)?
編輯:操作系統 - 視窗
的Windows:
WCHAR path[MAX_PATH];
GetModuleFileName(NULL, path, ARRAYSIZE(path));
的Linux:
char buffer[MAX_PATH];
readlink("/proc/self/exe", buffer, MAX_PATH);
Thanks @Barter,我有一個Windows,但它返回的路徑與.exe名稱,我怎麼能從路徑的末尾切割這個exe名稱? – Roman
所有你需要做的是找到最後\並把NULL放在那個地方。或者使用['PathRemoveFileSpec'](http://msdn.microsoft.com/en-us/library/windows/desktop/bb773748(v = vs.85).aspx) –
有對此沒有很好的跨平臺解決方案,但是,你可以在所有主要做到這一點平臺:
/proc/self/exe
特殊文件char buf[PATH_MAX];
ssize_t len;
if ((len = readlink("/proc/self/exe", buf, bufsize)) != -1) {
// buf contains the path
} else {
// error
}
_NSGetExecutablePath()
功能(從man 3 dyld
)#include <stdint.h>
#include <limits.h>
uint32_t size = PATH_MAX;
char buf[PATH_MAX];
if (_NSGetExecutablePath(buf, &size) != -1) {
// buf now contains the path
} else {
// error
}
GetModuleFileName()
並以NULL
作爲句柄。#include <windows.h>
char buffer[1024];
if (GetModuleFileName(NULL, buffer, sizeof(buffer)) != 0) {
// buffer contains the path
} else {
// error
}
這是與平臺相關的。 –