【问题标题】:Can I parse together guessable and non-guessable options with Boost::program_options?我可以用 Boost::program_options 解析可猜测和不可猜测的选项吗?
【发布时间】:2014-09-05 13:13:44
【问题描述】:

我有一些非常冗长的选项,例如 -length -strength,我想允许他们猜测,以便用户可以删掉他们的名字。

另一方面,一些选项的短名称相互包含,例如 -K1 -K10,当然应该禁用猜测。

我还有一个位置选项,我想保留对选项的所有标准检查:例如,我不想允许未知(错误输入)选项。

我想知道是否存在使用 Boost::program_options 实现此目的的方法...

【问题讨论】:

    标签: c++ boost boost-program-options


    【解决方案1】:

    至于I read the docsallow_guessing 做你想做的事。

    事实上,它根本不允许猜测:

    allow_guessing

    允许长选项的缩写拼写,如果它们明确标识长选项。如果猜测有效,长选项名称不应是其他长选项名称的前缀。

    当然,后者听起来像是一个令人担忧的限制,但实际上并非如此。它只是告诉你,如果你有--Kool--KoolAid,那么猜测甚至会使完整的--Kool 模棱两可(因为它可能是--KoolAid 的缩写)。

    --KoolA 不会有歧义。 -K 也不应该(注意单破折号),因为它不是长格式选项,因此永远不可能是缩写。

    【讨论】:

    • 你说的太对了!我误认为“如果猜测有效,则长选项名称不应是其他长选项名称的前缀。”变成“如果你想使用猜测,你不能定义像--K1--K10这样的选项”,但这不是真的。当前版本的 Boost::po 可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    相关资源
    最近更新 更多