问题标签 [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.
c++ - boost::program_options 具有多个标记的配置文件选项
我似乎无法像从命令行那样从配置文件中读取多令牌选项。配置文件的语法是什么?
这是添加选项描述的方式:
之后我解析命令和配置文件。
在命令行 '--coordinate 1 2' 有效。但是,当我尝试在配置文件中:
或者
它未能给出 invalid_option_value 异常。那么在多令牌选项的情况下,配置文件的语法到底是什么?
c++ - c++:程序设置 - boost.PropertyTree 或 boost.program_options?
我正在寻找一种在 C++ 中存储程序设置或选项或配置的解决方案。这些可能是在 GUI 中公开的设置,需要在我的代码运行之间保存。
在我的搜索中,我遇到了boost.PropertyTree,这似乎是一个不错的选择。我知道 boost 是受人尊敬的代码,所以我很喜欢使用它,所以我开始使用它进行开发。然后我遇到了boost.program_options,它似乎允许你做同样的事情,但对于程序设置的特定用例来说看起来更专业。
现在我想知道哪个最适合这份工作?(或者是否有比两者都好的第三种选择)
编辑: 仅供参考,这是一个插件,因此它不会使用命令行选项(如,它甚至不可能)。
更新
我最终坚持使用 boost.PropertyTree。我需要能够将更改的选项保存回 INI,但我没有看到使用 boost.program_options 的方法。
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:
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
我感兴趣的。
有没有办法以这种方式构建它,还是我需要自己动手做?
提前致谢!
c++ - 如何在 Boost 程序选项中获得更好的错误消息
在下面的代码中,我使用程序选项从命令行或文件中读取参数。此外,可以在运行时通过ConfigProxy::setConfig以编程方式设置选项
通过ConfigProxy,取回option值
但是,如果用户提供的“压缩”选项值类型错误,例如
然后抛出异常
该异常清楚地显示了类型转换问题。但是该消息似乎对用户找出导致错误的选项没有太大帮助。
有没有更好的方法来通知用户这种类型的错误,而不是抛出bad_any_cast异常?
- - - 编辑 - - - - - - - - - - - - -
感谢 Luc Danton 和 Tony,我发现了程序选项如何显示错误。
我认为,通过实现逻辑,我可以摆脱 bad_any_cast 异常。
c++ - 由于访问冲突,Boost::Program_Options 未处理的异常
我有一个程序在 DEBUG 模式下运行良好,但在 RELEASE 模式下,由于访问冲突,我得到一个未处理的异常。我很确定这不是由于空指针。这是调用堆栈:
代码:
异常内容如下:
c++ - 在程序选项值(ini 文件)中使用井号
我在使用 boost 程序选项从 ini 文件中读取时遇到了一些问题。问题是包含哈希标记的键(简化示例):
[节]
key="xxx#yyy"
检索密钥,返回“xxx”,这是因为哈希标记似乎被解释为注释的开头,因此该行的其余部分被跳过。不幸的是,我不能用其他字符替换“#”,因为该值是正则表达式。我没有找到引用 hashmark 的方法并且不想这样做,因为它会改变我的正则表达式并使其更加不可读。
有没有办法在不重写ini文件解析器的情况下解决这个问题?谢谢你的帮助。
我检索密钥的代码如下所示:
c++ - 仅允许带有 boost::program_options 的 `--option=arg` 参数样式
使用 boost::program_options,我想只允许--option=arg
参数的样式并禁止空格分隔--option arg
,这在参数是可选的时有时会模棱两可。
看起来有点可能。查看cmdline.hpp源代码(未找到文档),我尝试使用受限选项样式,仅包括allow_long
andlong_allow_adjacent
和 without long_allow_next
:
不幸--option arg
的是仍然被这个解析器接受......
可能是虫子?(libboost_program_options-1_46.so.1.46.1)
c++ - 如何在 Boost::Program_Options 中支持命令行语法“-DEVICE:iphone”?
Boost::Program_Options 的默认语法是“--DEVICE iphone”。如何支持语法“-DEVICE:iphone”或“-DEVICE=iphone”?
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>'