gpt4 book ai didi

c++ -::GetPrivateProfileString 读取 INI 文件的整个部分

转载 作者:可可西里 更新时间:2023-11-01 13:54:01 24 4
gpt4 key购买 nike

我正在修改现有的 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?)分隔的 key ,所以我不得不使用如上所述的循环提取它们 - 为了可能需要它的每个人,在这里分享它。 :-)

最佳答案

您不需要手动阅读文件,但阅读 GetPrivateProfileString 的手册会有所帮助:

lpKeyName [in] : The name of the key whose associated string is to be retrieved. If this parameter is NULL, all key names in the section specified by the lpAppName parameter are copied to the buffer specified by the lpReturnedString parameter.

关于c++ -::GetPrivateProfileString 读取 INI 文件的整个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4534048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com