一:linux下获取应用程序路径及当前目录
#include <iostream>
using namespace std;
#define MAX_PATH 1024
string GetModelePathLinux()
{
string strDir;
char szBuffer[MAX_PATH];
int nLen=readlink("/proc/self/exe",(char*)szBuffer,MAX_PATH);
if(nLen<0||nLen>=MAX_PATH){
return NULL;
}
szBuffer[nLen]='\0';
strDir=szBuffer;
return strDir;
}
string GetCurrectPathLinux()
{
string strDir;
char szBuffer[MAX_PATH];
int nLen=readlink("/proc/self/exe",(char*)szBuffer,MAX_PATH);
if(nLen<0||nLen>=MAX_PATH){
return NULL;
}
while(szBuffer[nLen]!='/') nLen--;
szBuffer[nLen]='\0';
strDir=szBuffer;
return strDir;
}
string GetPathLinux()
{
string strDir;
char szBuffer[MAX_PATH];
getcwd(szBuffer,MAX_PATH);
strDir=szBuffer;
return strDir;
}
int main() {
cout<<GetModelePathLinux()<<endl;
cout<<GetPathLinux()<<endl;
cout<<GetCurrectPathLinux()<<endl;
return 0;
}
/test/getpath/debug/getpath
/test/getpath/debug
/test/getpath/debug
注:getcwd获取当前路径,GetModelePathLinux获取应用程序所在路径
二:windows
另:当前目录(.//)
//获取当前工作路径
string GetCurrentWorkDir()
{
string strCurPath;
char szBuffer[1024];
memset(szBuffer,0x00,sizeof(szBuffer));
DWORD dwSize = GetModuleFileName(NULL, szBuffer, 1024);
szBuffer[dwSize] = 0;
while(szBuffer[dwSize] != '\\' && dwSize != 0){
szBuffer[dwSize] = 0; dwSize--;
}
//去掉最后一个"\\"
if (0 <= dwSize){
szBuffer[dwSize] = 0;
}
strCurPath = szBuffer;
return strCurPath;
}