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 указывает на то, что Setting::add() метод:

добавить [s] новую дочернюю настройку с заданным именем и типом к настройке, которая должна быть группой

Тем не менее, нет никакой группы в MyCfg… Так как мне добавить параметр в корень объекта Config?

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;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]