C/C++獲取相對當前啟動路徑(.exe)下的檔案全路徑名
阿新 • • 發佈:2019-02-09
void AnalyticalDecoder::validFilePath( const char* relativePath,char *xmlPath )
{
//得到當前工作路徑
TCHAR exeFullPath[MAX_PATH];
GetModuleFileName(NULL,exeFullPath,MAX_PATH);
//寬位元組轉換為多位元組,即unicode轉ascii,因為本人工程環境為unicode
//此方法先獲得轉換後的長度
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,exeFullPath,-1,NULL,0,NULL,FALSE);
char *psText = new char[dwNum];
if(!psText)
{
delete []psText;
}
//獲得轉換後的ascii
WideCharToMultiByte (CP_OEMCP,NULL,exeFullPath,-1,psText,dwNum,NULL,FALSE);
char *ptr,c='\\';
//最後一個出現c的位置
ptr = strrchr(psText, c);
//用指標相減 求得索引
int pos = ptr-psText;
//獲取真正指向路徑
strncpy(xmlPath,psText,pos );
//字串後加上0
xmlPath[pos] = 0;
//連接獲取xml檔案路徑
strcat(xmlPath,relativePath);
//釋放new後的記憶體
delete []psText;
{
//得到當前工作路徑
TCHAR exeFullPath[MAX_PATH];
GetModuleFileName(NULL,exeFullPath,MAX_PATH);
//寬位元組轉換為多位元組,即unicode轉ascii,因為本人工程環境為unicode
//此方法先獲得轉換後的長度
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,exeFullPath,-1,NULL,0,NULL,FALSE);
char *psText = new char[dwNum];
if(!psText)
{
delete []psText;
}
//獲得轉換後的ascii
WideCharToMultiByte (CP_OEMCP,NULL,exeFullPath,-1,psText,dwNum,NULL,FALSE);
char *ptr,c='\\';
//最後一個出現c的位置
ptr = strrchr(psText, c);
//用指標相減 求得索引
int pos = ptr-psText;
//獲取真正指向路徑
strncpy(xmlPath,psText,pos );
//字串後加上0
xmlPath[pos] = 0;
//連接獲取xml檔案路徑
strcat(xmlPath,relativePath);
//釋放new後的記憶體
delete []psText;