问题标签 [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 投票
3 回答
7048 浏览

c++ - boost::program_options 具有多个标记的配置文件选项

我似乎无法像从命令行那样从配置文件中读取多令牌选项。配置文件的语法是什么?

这是添加选项描述的方式:

之后我解析命令和配置文件。

在命令行 '--coordinate 1 2' 有效。但是,当我尝试在配置文件中:

或者

它未能给出 invalid_option_value 异常。那么在多令牌选项的情况下,配置文件的语法到底是什么?

0 投票
3 回答
4367 浏览

c++ - c++:程序设置 - boost.PropertyTree 或 boost.program_options?

我正在寻找一种在 C++ 中存储程序设置或选项或配置的解决方案。这些可能是在 GUI 中公开的设置,需要在我的代码运行之间保存。

在我的搜索中,我遇到了boost.PropertyTree,这似乎是一个不错的选择。我知道 boost 是受人尊敬的代码,所以我很喜欢使用它,所以我开始使用它进行开发。然后我遇到了boost.program_options,它似乎允许你做同样的事情,但对于程序设置的特定用例来说看起来更专业。

现在我想知道哪个最适合这份工作?(或者是否有比两者都好的第三种选择)

编辑: 仅供参考,这是一个插件,因此它不会使用命令行选项(如,它甚至不可能)。

更新

我最终坚持使用 boost.PropertyTree。我需要能够将更改的选项保存回 INI,但我没有看到使用 boost.program_options 的方法。

0 投票
2 回答
1236 浏览

c++ - boost::program_options::positional_options_description 终止

以下程序中止pointer being freed was not allocated

我在 OS X 10.6.7 上编译并将程序与 Boost 1.46.1 链接,我将其构建到 /usr/local 中。除了我(据说)链接的那个之外,我找不到任何已安装的 libboost_program_options。

知道是什么导致了这次崩溃吗?


编辑:至于堆栈跟踪,程序

建造为

并作为 ./sandbox 运行产生输出

至于构建 Boost:

这是我的 ~/user-config.jam:

0 投票
2 回答
2274 浏览

c++ - 从字符串/boost::any 映射构建 boost::options

我有一张代表配置的地图。这是一张std::string和的地图boost::any

该地图在开始时被初始化,我希望用户能够在命令行上覆盖这些选项。

我想做的是使用该options_description::add_option()方法从该地图构建程序选项。但是,它需要一个模板参数po::value<>,而我所拥有的只是boost::any.

到目前为止,我只有代码的外壳。 m_Config代表我的配置类,并getTuples()返回一个std::map<std::string, Tuple>. TuplePair是一个 typedefstd::pair<std::string, Tuple>并且元组包含boost::any我感兴趣的。

有没有办法以这种方式构建它,还是我需要自己动手做?

提前致谢!

0 投票
2 回答
5148 浏览

c++ - 如何在 Boost 程序选项中获得更好的错误消息

在下面的代码中,我使用程序选项从命令行或文件中读取参数。此外,可以在运行时通过ConfigProxy::setConfig以编程方式设置选项

通过ConfigProxy,取回option值

但是,如果用户提供的“压缩”选项值类型错误,例如

然后抛出异常

该异常清楚地显示了类型转换问题。但是该消息似乎对用户找出导致错误的选项没有太大帮助。

有没有更好的方法来通知用户这种类型的错误,而不是抛出bad_any_cast异常?

- - - 编辑 - - - - - - - - - - - - -

感谢 Luc Danton 和 Tony,我发现了程序选项如何显示错误。

我认为,通过实现逻辑,我可以摆脱 bad_any_cast 异常。

0 投票
2 回答
1220 浏览

c++ - 由于访问冲突,Boost::Program_Options 未处理的异常

我有一个程序在 DEBUG 模式下运行良好,但在 RELEASE 模式下,由于访问冲突,我得到一个未处理的异常。我很确定这不是由于空指针。这是调用堆栈:

代码:

异常内容如下:

0 投票
1 回答
965 浏览

c++ - 在程序选项值(ini 文件)中使用井号

我在使用 boost 程序选项从 ini 文件中读取时遇到了一些问题。问题是包含哈希标记的键(简化示例):

[节]
key="xxx#yyy"

检索密钥,返回“xxx”,这是因为哈希标记似乎被解释为注释的开头,因此该行的其余部分被跳过。不幸的是,我不能用其他字符替换“#”,因为该值是正则表达式。我没有找到引用 hashmark 的方法并且不想这样做,因为它会改变我的正则表达式并使其更加不可读。

有没有办法在不重写ini文件解析器的情况下解决这个问题?谢谢你的帮助。

我检索密钥的代码如下所示:

0 投票
0 回答
422 浏览

c++ - 仅允许带有 boost::program_options 的 `--option=arg` 参数样式

使用 boost::program_options,我想只允许--option=arg参数的样式并禁止空格分隔--option arg,这在参数是可选的时有时会模棱两可。

看起来有点可能。查看cmdline.hpp源代码(未找到文档),我尝试使用受限选项样式,仅包括allow_longandlong_allow_adjacent和 without long_allow_next

不幸--option arg的是仍然被这个解析器接受......

可能是虫子?(libboost_program_options-1_46.so.1.46.1)

0 投票
1 回答
425 浏览

c++ - 如何在 Boost::Program_Options 中支持命令行语法“-DEVICE:iphone”?

Boost::Program_Options 的默认语法是“--DEVICE iphone”。如何支持语法“-DEVICE:iphone”或“-DEVICE=iphone”?

0 投票
1 回答
4660 浏览

c++ - 在 Boost::Program_Options 中,如何设置 wstring 的默认值?

我下面的代码不起作用:

编译失败并出现错误:

d:\repo\a4x_ext\minidxdriver\testapp\configparser\boost\lexical_cast.hpp(1096) : error C2039: 'setg': is not a member of'boost::detail::lexical_stream_limited_src<CharT,Base,Traits>'