【问题标题】:what can and can't I do with boost.program_options?我可以用 boost.program_options 做什么和不能做什么?
【发布时间】:2012-09-25 10:53:01
【问题描述】:

我目前使用一些旧的 C 库来获取程序选项,并希望用一些适当的 C++ 替换它(主要是为了独立于那个库,这是一个真正的负担)。我正在考虑使用 boost.program_options,但不确定它能否支持我想要的一切。我想要的一些东西是:

  1. 允许以下命令行语法:myprogram option=value(特别是,我真的不想要--option value 语法)

  2. 如果没有提供值,则使用默认值(显然这可以在我的程序中完成,但选项库中的支持会很好)

  3. 允许默认选项(即使我不提供它们也始终存在)和包含所有选项及其描述的自动帮助输出

  4. 允许数学解析,即(命令行)myprogram option1=Pi option2=3/5 option3=sqrt(2) 在我的程序中给出 3.1415...、0.6 和 1.415...

  5. 允许扩展单个值。让option_3Dpoint 对应一个std::array<double,3>,我希望myprogram option_3Dpoint=0,0,0myprogram option_3Dpoint=0(扩展为0,0,0)都能工作

boost.program_options 可以支持哪些?有其他选择吗?

【问题讨论】:

  • 都支持,但你必须解析它(如果你不想使用--option value语法)
  • 我认为你的主要问题是myprogram option=value。您可以拥有--option=value-o=value,但对于option=value,您将需要位置参数并自己解析"option=value" 字符串,我担心。提供了 2 和 3,4 需要手动解析选项参数(您可以传递自定义解析器),我认为 5 可以通过特殊情况工作。
  • @Xeo 是否有另一个库(boost 或其他)来进行解析(对于第 4 点)?
  • @Walter:抱歉,我不知道。但是,应该有大量的计算器代码可以提供此功能,您需要做的就是在 = 之后拆分字符串。

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


【解决方案1】:

boost.program_options 是一个非常好的库。您也可以用来解析配置文件。答案:

  1. 不知道,但似乎没有内置支持。
  2. 是的。
  3. 是的。
  4. 除非您制作自己的表达式评估处理程序或使用其他一些 boost 库来执行此操作,否则不会。
  5. 是的,您将需要编写自己的处理程序,该处理程序从0,0,0 之类的字符串创建3DPoint 对象

【讨论】:

  • 没有,除非您制作自己的表达式评估处理程序或使用其他一些 boost 库来执行此操作。 还有哪些其他 boost 库?
  • 不知道,甚至可能是精神;)有人用它来做这个顺便说一句link
  • 这看起来很有趣。我在哪里可以找到他们的图书馆?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
  • 2015-06-16
  • 2020-07-09
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多