1

ini ファイルのセクション名として filepath を使用する必要があり、次のようにしようとしています。

QSettings ini(iniPath, QSettings::IniFormat);
ini.beginGroup("C:\\Users\\Username\\Documents\\222.txt");
ini.setValue(attributeName, attributeValue);
...
ini.endGroup();

次に、このセクションから値を読み取ろうとします。

QSettings ini(iniPath, QSettings::IniFormat);
ini.beginGroup("C:\\Users\\Username\\Documents\\222.txt");
auto allKeys = ini.allKeys();
for (auto& key: allKeys)
{
   QString val = ini.value(key);
   ...
}
ini.endGroup();

しかし、出力ファイルには、セクションの名前として「[C%3AUsers%5CUsername%5CDocuments%5C222.txt]」だけが表示されます。そして最も重要なことは、ini ファイルを読み取るときに QSettings がこのセクションを見つけられないことです。allKeys 変数は常に空です。

何が問題なのですか?ありがとう。

4

3 に答える 3

0

それは私の間違いでした。私の質問のコードは少し単純化されています。書き込みおよび読み取り用のコードは、メソッド「save」および「load」にあります。私は自分自身がかなりばかげていると感じています:(問題は、「保存」メソッドと「ロード」メソッドの入力パラメーターの違いにありました。「保存」メソッドでは、入力文字列は「C:\ユーザー\ユーザー名\ドキュメント\222.txt」であり、 「load」メソッドは「C:/Users/Username/Documents/222.txt」だったので、「load」メソッドで設定を読み取ろうとすると、QSettings でセクションが見つかりませんでした。

私が理解しているように、QSettings は「\」などの特殊文字を「%」記号でエスケープします。また、ネストを作成するためにQSettingsが使用する「/」記号。そこで、「C:\Users\Username\Documents\222.txt」のようなパスをそのまま使用することにしました。それは正常に動作します。皆さん、ありがとうございました。

于 2014-10-15T07:28:59.943 に答える