我正在修改现有的 C++ 应用程序并移出一些当前硬编码的值。
我正在使用一个类来“管理”整个事情并保存map<CString, CString>
INI 文件中的值。
现在我必须使用::GetPrivateProfileString
函数分别读取每个值 - 我可以以某种方式读取整个部分而不是单个值吗?
宁愿不必手动读取文件,但如果有任何合理(即高效+易于使用)的现有方式,我愿意接受建议。
编辑:刚才不得不“真正地”使用它,并且解决方案确实将 NULL 作为lpKeyName值传递。包含解析返回值的完整代码:
char buffer[MAX_STRING_SIZE];
int charsCount = ::GetPrivateProfileString("MySection", NULL, NULL, buffer, MAX_STRING_SIZE, m_strIniPath);
CString curValue;
curValue.Empty();
char curChar = '\0';
for (int i = 0; i < charsCount; i++)
{
curChar = buffer[i];
if (curChar == '\0')
{
if (curValue.GetLength() > 0)
HandleValue(curValue);
curValue.Empty();
}
else
{
curValue.AppendFormat("%c", curChar);
}
}
if (curValue.GetLength() > 0)
HandleValue(curValue);
这不是微不足道的,因为它返回由零字符(EOS?)分隔的键,所以我必须使用上述循环提取它们 - 为了每个可能需要它的人,在这里分享它。:-)