У меня есть файл конфигурации 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()
метод:
добавить [s] новую дочернюю настройку с заданным именем и типом к настройке, которая должна быть группой
Тем не менее, нет никакой группы в 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;
}
Других решений пока нет …