**********************************************************************
函数功能:INI文件的遍历函数参数:
1 pFilePath ini文件的路径
2 strKey 需要遍历的键值项
3 map_Key 关联式容器map 返回该键值下的所有子项
*//************************************************************************/
void EnumIniFile(LPCTSTR pFilePath, CString strKey,map<CString,int>& map_Key){
//TODO: Add your control notification handler code here
TCHAR strAppNameTemp[1024];//所有AppName的返回值
TCHAR strKeyNameTemp[1024];//对应每个AppName的所有KeyName的返回值
TCHAR strReturnTemp[1024];//返回值
DWORD dwKeyNameSize;//对应每个AppName的所有KeyName的总长度
//所有AppName的总长度
DWORD dwAppNameSize = GetPrivateProfileString(NULL,NULL,NULL,strAppNameTemp,1024,pFilePath);
if(dwAppNameSize>0)
{
TCHAR *pAppName =new TCHAR[dwAppNameSize];
int nAppNameLen=0;//每个AppName的长度
for(int i = 0;i<dwAppNameSize;i++)
{
pAppName[nAppNameLen++]=strAppNameTemp[i];
if(strAppNameTemp[i]=='')
{
OutputDebugString(pAppName);
OutputDebugString(_T("/r/n"));
dwKeyNameSize = GetPrivateProfileString(pAppName,NULL,NULL,strKeyNameTemp,1024,pFilePath);
if (pAppName == strKey)//这里是我们要遍历的键值
{
if(dwAppNameSize>0)
{
TCHAR *pKeyName =new TCHAR[dwKeyNameSize];
int nKeyNameLen=0;//每个KeyName的长度
for(int j = 0;j<dwKeyNameSize;j++)
{
pKeyName[nKeyNameLen++]=strKeyNameTemp[j];
if(strKeyNameTemp[j]=='')
{
OutputDebugString(pKeyName);
OutputDebugString(_T("="));
if(GetPrivateProfileString(pAppName,pKeyName,NULL,strReturnTemp,1024,pFilePath)) OutputDebugString(strReturnTemp);
CString strKeyName(pKeyName);
int iTemp = atoi(strReturnTemp);
map_Key.insert(make_pair(strKeyName,iTemp));
memset(pKeyName,0,dwKeyNameSize);
nKeyNameLen=0;
OutputDebugString(_T("/r/n"));
}
}
delete[]pKeyName;
}
}
memset(pAppName,0,dwAppNameSize);
nAppNameLen=0;
}
}
delete[]pAppName;
}