0

次の構成があります。config_lookup() を使用して各セクションをループする方法は知っていますが、各セクションの名前を見つける方法がわかりません!

downloads = {

    john = {

        configid = 1;
        status = 1;
        configname = "John's File Server";
        configtype = 0;
        ipaddress = "192.168.1.100";
        username = "test";
        password = "test";
    };

    jill = {

        configid = 3;
        status = 1;
        configname = "Jill's file server";
        configtype = 0;
        ipaddress = "10.10.20.50";
        username = "test";
        password = "test";
    };
};

セクション名、つまり、libconfig を使用して jack & jill を取得する方法を考えていました。パラメータ名は事前に知っているので、jack と jill の値を取得する方法は知っていますが、jack と jill はユーザーが構成します。短縮されたコードは次のようになります-

config_t cfg;
config_setting_t *setting;
int i = 0, count = 0;

if(!config_read_file(&cfg, filename))
    return false;

if((setting = config_lookup(&cfg, "downloads")) != NULL)
{
    count = config_setting_length(setting);

    for(i = 0; i < count; ++i)
    {
        // do stuff
    }
}

config_destroy(&cfg);

それを行う方法はありますか?前もって感謝します

4

1 に答える 1

0

わかりましたので、イアンは答えを投稿しなかったので、私は投稿します。クレジットはイアンに行きます。

config_t cfg;
config_setting_t *setting;
int i = 0, count = 0;

if(!config_read_file(&cfg, filename))
    return false;

if((setting = config_lookup(&cfg, "downloads")) != NULL)
{
    count = config_setting_length(setting);

    for(i = 0; i < count; ++i)
    {
        config_setting_t *nodes = config_setting_get_elem(setting, i);
        const char *section_name = = config_setting_name(nodes); // Section name, no need to free, the library manages that;
    }
}

config_destroy(&cfg);
于 2016-01-18T12:49:20.210 に答える