【发布时间】:2016-05-01 23:24:46
【问题描述】:
我有需要特殊处理的选项--foo(缩写-f)和--bar,它们是可重复的,并且顺序很重要。因此,对于以下内容:
program --foo 1 --z -f 2 --bar 3 --x --foo 4
我想设置一个能够构造 [("foo", 1), ("foo", 2), ("bar", 3), ("foo", 4)] 的键值映射。
请注意这个元组数组的顺序,和命令行中的顺序是一样的。我已经丢弃了数组中不重要的选项,但它们可能仍然存在于命令行中。
似乎使用boost::program_options 允许可重复选项的唯一方法是为任何给定选项调用composing(),但是由于每个选项都将其所有值存储在一个向量中,我失去了交错选项所需的顺序。
那么,boost::program_options 可以帮忙吗?
编辑
我已在此处询问替代软件建议:https://softwarerecs.stackexchange.com/questions/31766/
并使用 Poco 回答。
【问题讨论】:
-
你能接受--foo=1 --foo=2吗?
-
@RichardHodges 是的,我插入了
--z以证明它可能没有严格的顺序并且可以互换。如果您的意思是限制请求以受约束的方式接受它,那将无视问题。 -
@RichardHodges 如果您知道一个替代的小型命令行解析器库也可以轻松完成此操作,我将不胜感激。
标签: c++ boost boost-program-options