通过提供INI文件的节名,例如我的是【1】【2】【3】【4】,可以获取下面所有键的信息,包括键名称和内容。
void GetIniInfo()
{
CStringArray arrDbfFile;
CString strFilePath = _T("c:\\info.ini");
//存储每个节所有键的信息,每个以NULL分开
TCHAR szBuf[_MAX_PATH];
//存储每个键的信息,可以将该szWork进行保存
TCHAR szWork[_MAX_PATH];
memset(szBuf,0,_MAX_PATH);
memset(szBuf,0,_MAX_PATH);
INT nNum = 0;
INT nLen = 0;
//根据小节名称,获取键的全部信息存储在szBuf,其中nNum为内容的长度
//szBuf中会有多个字符串,看你的键的多少,每个以一个NULL空开
nNum = ::GetPrivateProfileSection(_T("3"),szBuf,_MAX_PATH,strInit);
//获取每个键的长度,只计算一个,因为后面以NULL隔开,不被计算
nLen = _tcslen(szBuf);
//通过指针,循环,将里面所有信息取出保存
TCHAR* p = szBuf;
while(nLen < nNum)
{
_tcscpy(szWork,p);//此处的szWork为所需内容
//取完内容后,将nLen+1,跳过NULL
nLen = nLen + 1;
//指向下一个字符串
p = &szBuf[nLen];
//nLen移动到这个字符串末尾,以便与Num进行比较,控制while循环
nLen += _tcslen(p);
CString strTemp = szWork;
//将所有键的内容保存到CStringArray结构当中
arrDbfFile.Add(strTemp.Right(strTemp.GetLength()-strTemp.Find(_T('='))-1));
}
}