5

Boostライブラリを使用して.iniファイルを読み書き(または変更)する方法は?

4

1 に答える 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に保存しようとすると、次のようになります。

  1. ptreeが深すぎます
  2. 重複キー

ここで修正されたのは、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 に答える