2

我有一个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 文档表明该方法Setting::add()

将具有给定名称和类型的新子设置添加到设置中,该设置必须是组

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

4

1 回答 1

2

看起来您所需要的只是: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;
}
于 2016-01-28T11:13:15.527 回答