Есть ли способ иметь несколько строк "имя = значение" в файле INI, используя boost :: program_options :: parse_config_file? - PullRequest
4 голосов
/ 17 июня 2010

Я хочу иметь возможность указать несколько строк имя = значение в файле INI, используя boost::program_options.Что-то вроде

[list.names]
name=value
name=value2
name=value3

Есть ли способ добиться этого с помощью boost::program_options?Я получаю ошибку множественные вхождения , если я пытаюсь это сделать

Если нет, какие другие библиотеки доступны?

1 Ответ

4 голосов
/ 18 июня 2010

Укажите значение поля как std::vector<value_type> в options_description:

namespace po = boost::program_options;

po::options_description desc;
desc.add_options()
    ("list.names.name", po::value< std::vector<std::string> >(), "A collection of string values");

po::variables_map vm;
std::ifstream ini_file("config.ini");
po::store(po::parse_config_file(ini_file, desc), vm);
po::notify(variables);

if (vm.count("list.names.name"))
{
    const std::vector<std::string>& values = vm["list.names.name"].as< std::vector<std::string> >();
    std::copy(values.begin(), values.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...