这很容易做到。请仔细阅读MSDN Article。请注意,当您将NULL传递给第一个或第二个参数时,函数将返回所有节名称(在前一种情况下)或键(在后一种情况下)的列表。
所以为你实现HaseOption()方法中,你将不得不与此类似代码:
BOOL HasSection(CString sSection)
{
DWORD dwSize = 100, dwRequired;
LPTSTR lpBuffer = new TCHAR[dwSize];
BOOL bExists = FALSE;
dwRequired = ::GetProfileString(NULL, NULL, _T(""), lpBuffer, dwSize);
while(dwRequired == dwSize - 2)
{
// buffer is too small
delete [] lpBuffer;
dwSize = dwRequired + 100;
lpBuffer = new TCHAR[dwSize];
dwRequired = ::GetProfileString(NULL, NULL, _T(""), lpBuffer, dwSize);
}
if(dwRequired)
{
LPTSTR lpszFound = lpBuffer;
do
{
if(sSection.CompareNoCase(lpszFound) == 0)
{
bExists = TRUE; break;
}
} while(*(lpszFound = _tcsninc(lpszFound, _tcsnbcnt(lpszFound, dwRequired)+1)));
}
delete [] lpBuffer;
return bExists;
}
我没有测试代码,只是从我的计划削减正粘贴和修改了一下。请自行测试代码
来源
2013-01-22 23:57:25
cha
您可能需要通过阅读注册表(或者如果您通过自己解析.ini文件来使用.ini文件,这非常简单)来实现此目的。 –
的确如此,但只是失去了一般性。如果Microsoft更改配置文件字符串的保存方式,我必须修改这些方法。 – koloman