我有一个如下所示的配置文件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对象的根目录?
答案 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;
}