1. 程式人生 > >C/C++獲取相對當前啟動路徑(.exe)下的檔案全路徑名

C/C++獲取相對當前啟動路徑(.exe)下的檔案全路徑名

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;