Вопрос

Есть ли способ загрузить динамический файл INI, как тот, который ниже.

[basic]
number_of_servers=3

[server1]
ip=10.20.30.40
password=sdfslkhf    

[server2]
ip=10.20.30.41
password=sdfslkhf

[server3]
ip=10.20.30.42
password=sdfslkhf

Здесь идея состоит в том, что серверы, определенные здесь, очень специфичны для развертывания программного обеспечения; Таким образом, администратор решает, сколько серверов участвуют в конфигурации.

Есть ли способ справиться с этим в Boost Program_Options?

Это было полезно?

Решение

Другой, потенциально более стандартный способ, был бы таким:

[basic]
number_of_servers=3

[server]
name=server1
ip=10.20.30.40
password=sdfslkhf    

[server]
name=server2
ip=10.20.30.41
password=sdfslkhf

[server]
name=server3
ip=10.20.30.42
password=sdfslkhf

Таким образом, вам не нужно беспокоиться о неопределенных именах раздела, и я думаю, что этот стиль также более широко используется (определенно это так, как бы Quickfix это, как это, очень похоже на то, что я изложил).

И вы, вероятно, можете удалить number_of_servers запись, и просто используйте count() функция, чтобы найти, сколько server разделы есть.

Другие советы

Есть необязательно bool Параметр, чтобы разрешить незарегистрированные записи в parse_config_file функция. Он установлен на ложь по умолчанию. Смотрите документацию здесь:

http://www.boost.org/doc/libs/1_45_0/doc/html/boost/program_options/parse_config_file_id991860.html.

Если вы называете эту функцию с true Тогда он добавит любые незарегистрированные записи в variables_map как строки. Вы можете проверить, существуют ли они с variables_map::count функция.

Надеюсь, это поможет.

Что вы можете. Серверные разделы имеют шаблон: просто загрузите все те, которые соответствуют шаблону в список серверов.

Проблемы, с которыми я сталкивался при решении этого, должен был убедиться, что разделы хранятся вместе и не смешиваются.

В конце концов я полагался на Options_description с известными / конечными вариантами, а затем с помощью Parsed_options, которые выходят из PARSE_CONFIG_FILE, мне пришлось собрать все непризнанные варианты (Collection_unrecognized). Тогда мне пришлось повторить его, чтобы выбрать варианты в порядке.

Спасибо всем за их вклад.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top