如何使用boost库读取和写入.ini文件

时间:2013-03-26 20:59:42

标签: c++ boost ini

如何使用boost库读取和写入(或修改).ini文件?

1 个答案:

答案 0 :(得分:5)

使用Boost.PropertyTree,您可以阅读并更新树,然后写入文件(请参阅loadsave函数。

看看How to access data in property tree。 您绝对可以添加新属性或更新现有属性。 它提到容器上还有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. 重复密钥
  3. 这里修复的是一个写入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
    

    随意尝试。