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

libconfig++ : adding a setting to the root of the configuration tree

我有一个配置文件 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()方法:

add[s] a new child setting with the given name and type to the setting, which must be a group

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

看来您需要的只是: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;
}