有没有办法在使用boost :: program_options :: parse_config_file的INI文件中有多个“name = value”行?

时间:2010-06-17 12:19:44

标签: c++ boost

我希望能够使用boost::program_options在INI文件中指定多个name = value行。像

这样的东西
[list.names]
name=value
name=value2
name=value3

有没有办法通过boost::program_options实现这一目标?如果我尝试

,我会收到多次出现错误

如果没有,还有哪些其他库?

1 个答案:

答案 0 :(得分:4)

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"));
}