问题标签 [boost-program-options]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1403 浏览

c++ - 使用 boost::program_options 和 push_back 读取 std::vector?

我有一个包含端点条目列表的配置文件。每个条目都标有 [endpt/n] 标题(用于第 n 个端点),并由 MAC 和 IP 地址组成。我想使用 boost::program_options 将地址读取为字符串,并将结果 push_back 到两个向量上。我已经查看了 program_options 文档,但我无法找到我正在寻找的内容......这是一个端点条目的示例:

这是我目前用来将每个端点的 MAC 和 IP 选项添加到 boost::options_description 的代码:

此代码工作正常,但出于几个原因,我想为 MAC 和 IP 地址声明空向量,并在 boost 读取它们时将选项 push_back 到它们上。我是 Boost 的新手,因此任何关于更好地阅读列表的方法的建议或任何其他帮助都将不胜感激。谢谢!

0 投票
2 回答
965 浏览

c++ - 集成“谷歌测试”和“增强程序选项”

我有一个使用谷歌测试的程序,以及用于解析选项的提升程序选项库。问题是谷歌测试也有它自己的选项解析器,所以我需要在将选项提供给谷歌测试之前过滤掉。

例如,当我运行 hello 我使用如下

--option1 是我在将 --gtest_filter 选项传递给谷歌测试之前使用的选项。

当我运行以下代码时,我得到了异常,因为--gtest_filter这不是我用于提升程序选项的选项。如何结合那些提升程序选项无法识别的选项来提供 gtest 的输入?

0 投票
1 回答
3495 浏览

c++ - 来自 boost 程序选项的布尔选项

我正在使用 boost 程序选项从命令行参数获取布尔值。我希望我的论点被指定为“Y”、“是”、“N”、“否”。

实际上我的代码是使用一个临时字符串来完成的

  1. 将被解析boost program options
  2. 检查“Y”、“是”、“N”或“否”
  3. 分配给布尔变量成员。

最重要的是,我还使用另一个临时字符串来获取默认值。

我做了所有这些工作,因为我尝试了下面不起作用的代码

你知道提升程序选项是否可以比我用来实现这一目标的选项更好一些吗?

0 投票
3 回答
4863 浏览

c++ - 使用 boost 程序选项的无效选项值异常

我有一个使用 boost v1.45.0 程序选项的 Visual Studio 2008 C++ 应用程序。

我希望能够解析一个看起来像这样的命令行选项:foo.exe -x 1,2, 4-7这样它会产生一个std::vector< int >值为 [1, 2, 4, 5, 6, 7] 的值。所以,我写了一个自定义验证器:

但是,我从来没有得到我的自定义验证器代码。我总是收到一条异常parse_command_line消息:in option 'id': invalid option value.

我需要做什么才能使这项工作如愿以偿?

谢谢,保罗

0 投票
1 回答
7870 浏览

c++ - 增强枚举的自定义验证器

我正在尝试验证对我定义的枚举的命令行输入,但得到编译器错误。我以使用Boost 的 program_options 处理复杂选项为例。

为了节省不必要的代码,我添加了如下选项:

如果需要编译器错误,我可以发布它,但希望让问题看起来简单。我尝试寻找示例,但我真正能找到的唯一其他示例是来自 Boost 网站的示例/regex.cpp

  1. 我的场景和找到的示例之间有区别吗,除了我的是一个枚举,其他的是结构?编辑:我的场景不需要自定义验证器重载。
  2. 有没有办法重载枚举的验证方法?编辑:不需要。
0 投票
4 回答
45954 浏览

c++ - 使用 Boost 库程序选项的必需和可选参数

我正在使用 Boost Program Options Library 来解析命令行参数。

我有以下要求:

  1. 一旦提供了“帮助”,所有其他选项都是可选的;
  2. 一旦未提供“帮助”,则需要所有其他选项。

我该如何处理?这是我处理这个的代码,我发现它非常多余,我认为一定有一个容易做到的,对吧?

0 投票
3 回答
3006 浏览

c++ - 使用 '--' 作为带有 boost::program_options 的选项结束标记

指示命令行程序选项结束的传统方式是使用 option --。如何让 boost::program_options 将其识别为选项并接受命令行的其余部分作为位置参数?以下不起作用:

如果我foo bar作为参数给出,我将一无所获final_args(如预期的那样),但当我-- foo bar作为参数给出时(当我希望找到final_args[0] == "foo"and时final_args[1] == "bar")。我在这里假设这--是一个长参数,其参数名称为空字符串。相反,如果它应该被解释为一个短参数,-作为参数名称,我该如何指定呢?据我所知,将参数规范从更改""",-"不会影响结果。

如何让 boost::program_options--正确处理?

编辑:这是尝试通过创建一个 Tim Sylvester 建议的extra_style_parser

"pargs"被添加到这样的选项中:

在参数列表中使用 a 运行它--会导致required_option异常。(如果不是po::option为每个尾随 arg 制作一个,我会得到类似的结果,而是将它们全部打包到po::option::original_tokens一个中po::option。)

0 投票
2 回答
1379 浏览

c++ - boost::program_options 具有 zero_token 的值向量

我正在尝试使用 boost::program_options 解析以下语法:

到目前为止我的程序:

这仅适用于 e)。如果我将其更改为:

它适用于 a) 和 e)。和

它适用于 a)、b) 和 e)。

我怎样才能让它解析所有上述情况?

我想我需要一个值向量与 zero_tokens() 的某种组合,但我似乎无法让它工作。

0 投票
1 回答
782 浏览

c++ - 更好地处理 boost::program_options 中丢失/错误的键

当像下面这样的调用失败时,有没有办法知道涉及哪个键?

如果地图中缺少密钥,或者无法转换为 int,我会得到一个相当无用的 bad_any_cast,并且我不知道以下任何内容:

  • 涉及的关键
  • 存储的价值,或者即使它在那里。
  • 涉及的类型

我找不到任何不涉及修改 boost 标头或将每个对上述内容的调用包装在 try..catch 块中的解决方案。我认为这是一个常见问题,所以也许其他人知道更好的方法。

0 投票
2 回答
742 浏览

class - 可以使用带有自己的模板类的 boost::program_options 吗?

我目前开始使用 boost::program_options 来解析命令行选项以及配置文件。

是否可以使用自己的模板类作为选项参数?这意味着,像

试图编译这个我得到一个语义问题(没有匹配函数调用'value')。我想我需要为通用类型提供一些转换,但我没有真正的想法。

有人可以帮忙吗?谢谢

永旺512