草庐IT

extract_options

全部标签

c++ - boost::program_options :迭代并打印所有选项

我最近开始使用boost::program_options并发现它非常方便。也就是说,缺少一件事我无法以一种好的方式编写自己的代码:我想遍历boost::program_options::variables_map中收集的所有选项将它们输出到屏幕上。这应该成为一个方便的函数,我可以简单地调用它来列出所有设置的选项,而无需在添加新选项或每个程序时更新函数。我知道我可以检查和输出单个选项,但如上所述,这应该成为一个忽略实际选项的通用解决方案。我进一步知道我可以遍历variables_map的内容因为它只是一个扩展的std::map.然后我可以检查存储的boost::any中包含的类型。变量

c++ - boost::program_options 错误或功能?

非常简单的例子:#include#includenamespacepo=boost::program_options;intmain(intargc,char*argv[]){po::options_descriptionrecipients("Recipient(s)");recipients.add_options()("csv",po::value(),"")("csv_name",po::value(),"");po::options_descriptioncmdline_options;cmdline_options.add(recipients);po::variables

c++ - 当 T 不可移动构造时,为什么不删除 std::optional 的移动构造函数?

根据标准,std::optional的复制构造函数:...shallbedefinedasdeletedunlessis_copy_constructible_vistrue.但是std::optional的移动构造函数:...shallnotparticipateinoverloadresolutionunlessis_move_constructible_vistrue.正如我understanddeletedconstructors,目的是不删除std::optional的move-constructor将允许这样的代码:std::optionalo1;std::optional

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

我一直在寻找在C++中存储程序设置或选项或配置的解决方案。这些可能是在GUI中公开的设置,需要在我的代码运行之间保存。在我的搜索中,我遇到了boost.PropertyTree这似乎是一个不错的选择。我知道boost是受人尊敬的代码,所以我很喜欢使用它,所以我开始使用它进行开发。然后我遇到了boost.program_options这似乎允许您做同样的事情,但看起来更适合程序设置的特定用例。现在我想知道哪个最适合这份工作?(或者有没有比两者都好的第三种选择)编辑:仅供引用,这是一个插件,因此它不会使用命令行选项(因为它甚至不可能)。更新我最终坚持使用boost.PropertyTree

c++ - 如何在 boost::program_options 中接受空值

我正在使用boost::program_options库来处理命令行参数。我需要通过-r选项接受文件名,以防万一它为空(-r不带参数)我需要使用标准输入。desc.add_options()("replay,r",boost::program_options::value(),"blablabla")在这种情况下,boost不会接受没有参数的-r并抛出异常。default_value()选项不起作用,即使用户没有给出-r选项,它也会使库返回值。任何想法如何解决? 最佳答案 请使用implicit_value方法,例如desc.add

c++ - 使用 boost::program_options 接受负 double

我需要能够拥有boost::program_options解析一个double组在命令行上传递。对于正double,这没问题,当然(在add_options中使用带有std::vector的多token),但是对于否定的,我知道这些都是模棱两可的论点。以下是我想要学习的演示:mycommand--extent-1.0-2.0-3.01.02.03.0--some-other-argumentsomevalueextentistobebackedbyaBoundsclasswithatleastoneconstructorthattakesinsixindividualTargument

c++ - 如果包含的类型是可平凡复制的类型,则 std::optional 是否会是可平凡复制的类型

如果std::optional中的类型T是可平凡复制的类型,则std::optional将是可平凡复制的。我问,因为我想在原子中使用它,所以以下对于一些可简单复制的类型T有效std::atomic> 最佳答案 复制构造函数指定为:optional(constoptional&rhs);3Requires:is_copy_constructible_vistrue.4Effects:Ifrhscontainsavalue,initializesthecontainedvalueasifdirect-non-list-initializ

c++ - 使用 std::optional<int> 是否与使用 int 一样有效?

我有一个四/八叉树数据结构。我将一个单元格的子索引/ptrs存储在一个数组中。数组中的每个位置都代表一个child相对于其parent的位置,例如二维://_____________//|||//|2|3|//|_____|_____|//|||//|0|1|//|_____|_____|//foreachcell,4childrenarealwaysstoredinrow-majororderstd::vector>children;我知道最大子节点数是Integer的值的子集。类型可以代表。因此,我可以通过使用像-1这样的“魔法”值来识别单元格是否缺少child。对于Integer

c++ - 如何手动将选项插入 boost.Program_options?

我有一个使用Boost.Program_options来存储和管理其配置选项的应用程序。我们目前正在远离配置文件,转而使用数据库加载配置。我编写了一个API,它通过主机名和实例名从数据库中读取配置选项。(酷!)然而,据我所知,没有办法手动将这些选项插入到boostProgram_options中。有没有人用过这个,有什么想法吗?boost的文档似乎表明在该map中获取内容的唯一方法是通过store函数,该函数可以从命令行或配置文件中读取(不是我想要的)。基本上是在寻找一种将数据库读取值手动插入到map中的方法。 最佳答案 我的答案来

c++ - target_compile_options() 仅适用于 C++ 文件?

是否可以仅将target_compile_options()用于C++文件?我想将它用于作为其他应用程序依赖项的目标,以便库可以将其编译器标志传播到这些应用程序。但是,如果与C或ObjC文件一起使用,某些标志(例如-std=c++14)会导致构建失败。我读过我应该CXX_FLAGS而不是只将这些标志添加到C++文件中,但这不会(自动)通过cmake的包系统传播。 最佳答案 解决方案您可以使用generatorexpressions来执行此操作:target_compile_options(MyLibPUBLIC$:-std=c++1