Boostライブラリを使用して.iniファイルを読み書き(または変更)する方法は?
17259 次
1 に答える
6
これによりBoost.PropertyTree
、ツリーの読み取りと更新を行ってから、ファイルに書き込むことができます(load
およびsave
関数を参照してください)。
プロパティツリーのデータにアクセスする方法をご覧ください。あなたは間違いなく新しいプロパティを追加するか、既存のプロパティを更新することができます。コンテナにもerase
あるので、既存の値を削除できるはずです。boost
(上記のリンク)からの例:
ptree pt;
pt.put("a.path.to.float.value", 3.14f);
// Overwrites the value
pt.put("a.path.to.float.value", 2.72f);
// Adds a second node with the new value.
pt.add("a.path.to.float.value", 3.14f);
次に、更新されたツリーをファイルに書き込むか、新しいツリーを上書きするか、既存のツリーを上書きするとします。
編集: iniファイルの場合、特定のチェックを行います。
上記の例では、ini_parserを使用してiniに保存しようとすると、次のようになります。
- ptreeが深すぎます
- 重複キー
ここで修正されたのは、iniファイルを書き込むサンプルコードです。既存のキーの値を更新してから、新しいキーを追加しました。
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/ini_parser.hpp>
void save(const std::string &filename)
{
using boost::property_tree::ptree;
// pt.put("a.path.to.float.value", 3.14f);
// pt.put("a.path.to.float.value", 2.72f);
// pt.add("a.path.to.float.value", 3.14f);
ptree pt;
pt.put("a.value", 3.14f);
// Overwrites the value
pt.put("a.value", 2.72f);
// Adds a second node with the new value.
pt.add("a.bvalue", 3.14f);
write_ini( filename, pt );
}
int main()
{
std::string f( "test.ini" );
save( f );
}
ファイルtest.ini
:
[a]
value=2.72
bvalue=3.14
自由に実験してください。
于 2013-03-26T22:32:00.010 に答える