【发布时间】:2019-01-16 20:36:12
【问题描述】:
我正在使用 boost::program_options 来加载命令行参数。现在我想另外加载一个具有相同参数集的配置文件。我以非常标准的方式使用它:
ifstream ifs(filename.c_str());
if (ifs) {
po::store(po::parse_config_file(ifs, optionsDescription), vm);
po::notify(vm);
}
问题是 parse_config_file 接受以下标准格式的 ini 文件:
key1=value
key2 = value
但我的文件没有使用“等号”来分隔键和值,而只使用空格和/或制表符,如下所示:
key1 value
key2 value
出于兼容性原因,我需要保留此格式。有没有办法通过 boost program_options 实现这一点? 我找到了 command_line parses 的样式选项,但 parse_config_file 似乎没有这样的选项。
【问题讨论】:
-
也许您可以读取您的文件并将不同的选项存储在内存中(例如
argv)并将其提供给command_line_parser? -
如果没有标准支持的方式,可能需要类似的东西。存储在内存中并重新格式化为标准 ini 格式(添加等号而不是每行的第一个分隔符)或提供命令行解析器(在每行前面添加减号)。不是很好,但如果没有其他选项可用。
标签: c++ boost delimiter file-format boost-program-options