既存のC++アプリケーションを変更し、現在ハードコーディングされているいくつかの値を移動しています。
これは、このすべてを「管理」map<CString, CString>
し、INIファイルの値を保持する1つのクラスで実行しています。
今のところ、::GetPrivateProfileString
関数を使用して各値を個別に読み取る必要があります-単一の値ではなく、どういうわけかセクション全体を読み取ることができますか?
ファイルを手動で読み取る必要はありませんが、合理的な(つまり、効率的で使いやすい)既存の方法がある場合は、提案を受け付けています。
編集:ちょうど今それを「実際に」使用する必要があり、ソリューションは実際にlpKeyName値としてNULLを渡していました。戻り値の解析を含む完全なコード:
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?)で区切られたキーを返すので簡単ではないので、上記のようなループを使用してキーを抽出する必要がありました。必要になる可能性のあるすべての人のために、ここで共有してください。:-)