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;
}
Другие вопросы по тегам