#define MAX_PATH 200
//relativePath相对exe文件的指向路径
{
//得到当前工作路径
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;
}
调用方法为:
char xmlPath[MAX_PATH];
validFilePath("\\Configure\\test.xml",xmlPath);