libconfig ++:将设置添加到配置树的根目录

时间:2016-01-28 09:17:19

标签: c++ libconfig

我有一个如下所示的配置文件myCfg.cfg

keyA = 1.0
keyB = 2
keyC = "hello"

请注意,所有设置都位于配置树的根目录。

我希望我的C ++程序加载该文件,然后添加一个新设置,其密钥为keyD,并为其指定整数值5。最终,MyCfg应该在内存中看起来像这样:

keyA = 1.0
keyB = 2
keyC = "hello"
keyD = 5

首先加载myCfg.cfg文件以构造MyCfg。然后,必须将设置keyD添加到MyCfg的根目录中。 libconfig documentation表示Setting::add()方法:

  

为设置添加[s]具有给定名称和类型的新子设置,该设置必须是一个组

但是,MyCfg中没有任何组...那么如何将设置添加到Config对象的根目录?

1 个答案:

答案 0 :(得分:1)

看起来你需要的只是:getRoot ()

以下是示例:

#include <iostream>
#include "libconfig.h++"


int main ()
{
    libconfig::Config MyCfg;
    std::string file = "myCfg.cfg";

    try {
        MyCfg.readFile (file.c_str () );

        libconfig::Setting & root = MyCfg.getRoot ();
        // This also works.
        // libconfig::Setting & root = MyCfg.lookup ("");
        libconfig::Setting & keyD = root.add ("KeyD", libconfig::Setting::TypeInt);
        keyD = 5;

        // You dont need it, but it's just for testing.
        MyCfg.writeFile (file.c_str () );
    }
    catch (...) {
        std::cout << "Error caused!" << std::endl;
    }

    return 0;
}