Boost 程序选项 bool 始终为 True

2024-02-13

通过程序选项,我正在检查参数的有效组合。但由于某种原因,gpu 参数是一个布尔值,无论我是否在命令行上将其设置为 false,它始终为 true。如果我在命令行上指定 gpu 选项,有没有办法可以为 false?我希望能够创建一个布尔变量来表示是否使用了命令行上的选项。

另外,我找不到关于变量映射的 count() 的任何文档。它是 std::map 函数吗?

部分代码:

namespace po = boost::program_options;
po::options_description desc("Allowed Options");
desc.add_options()
  ("help,h", "Produce help message")
  ("remove_database,r",po::value<std::vector<std::string>>
    (&remove_database),
    "Remove a pre-built database, provide a name(s) of the database")
  ("gpu,u", po::bool_switch()->default_value(false),
    "Use GPU? Only for specific algorithms");

po::variables_map vm;
po::store(po::parse_command_line(argc,argv,desc),vm);
po::notify(vm);

//Processing Cmd Args
bool help           = vm.count("help");
bool remove         = vm.count("remove_database");
bool gpu            = vm.count("gpu");

test(help,"help");
test(remove, "remove");
test(gpu, "gpu");

.....
void test(bool var1, std::string var2){
  if(var1)
    std::cout << var2 << " is active " << std::endl;
 else
    std::cout << var2 << " is not active " << std::endl;

Output:

$./a.out -r xx -u off
remove is active 
gpu is active
$./a.out -r xx -u false
remove is active 
gpu is active

您正在使用一个bool_switch。默认情况下,该选项是false就像你指定的那样->default_value(false)。因为它是一个开关,所以仅仅存在-u or --gpu当您运行可执行文件时会将开关转到true。你在它后面放什么并不重要。

See 这个答案 https://stackoverflow.com/a/28133253/2297365了解更多使用详情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Boost 程序选项 bool 始终为 True 的相关文章

随机推荐

  • Django Forms 和 Bootstrap - CSS 类和

    我在用着推特引导程序 https github com twitter bootstrap tree 2 0 wip使用 Django 来渲染表单 Bootstrap可以很好地格式化您的表单 只要您有CSS它期望包含的类 然而 我的问题是
  • ArrayList 的 ConcurrentModificationException [重复]

    这个问题在这里已经有答案了 我有以下代码 private String toString List
  • 实体框架 4.1:无法从 DbQuery 转换为 ObjectQuery

    我有以下代码 public void DeleteAccountsForMonth int year int month var result from acm in this database AccountsOnMonth where
  • SQL 查询的日期时间参数

    我正在重构我的代码 考虑这个例子 public virtual List
  • Sherlock 操作栏的菜单项背景

    我在 Sherlock 操作栏中呈现自定义视图时遇到问题 发生的情况是我已经成功地在操作栏中设置了自定义视图 旨在将标题文本视图设置在中心 但是当我设置其他菜单项 例如刷新 时 它的背景会显示为黑色 主页按钮也会发生同样的情况 请浏览以下快
  • 加载本地数据谷歌colab

    我有一个 npy 文件 largeFIle npy 保存在我的谷歌驱动器上的同一个 colab笔记本 文件夹中 我保存了我的谷歌colab笔记本 我正在尝试使用下面的代码将数据加载到我的笔记本中 但是我收到以下错误 当我在笔记本电脑上本地运
  • C# 从 List 获取键和值

    给定一个列表 private List
  • java 的 servicewrapper 的替代品?

    我用过服务包装器 http wrapper tanukisoftware org doc english download jsp然而 在过去的几次 双重许可证对于商业产品来说有些复杂 通常你必须付费 是否有具有类似功能的完全自由和开源软件
  • 寻找 C# 代码解析器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一组类 最好在 net 框架中 它们将解析 C 代码并返回带有参数的函数列表 类及其方法 属
  • 为什么 Dockerized Hadoop 数据节点注册了错误的 IP 地址?

    我有 Hadoop 2 7 1 名称节点和数据节点的单独 Docker 1 9 1 映像 我可以从中创建容器 并让它们通过用户定义的 Docker 网络进行通信 然而 数据节点似乎报告自己拥有网络网关的 IP 地址 而不是它自己的 IP 地
  • 将 admin date_hierarchy 设置为foreignkey日期字段

    当我尝试设置时 date hierarchy schedule date 其中 Schedule 是外键 我收到以下错误 TestAdmin date hierarchy refers to field schedule date that
  • 使用 Express 后端将 create-react-app 部署到 heroku 在浏览器中返回无效的主机标头

    标题说明了一切 我在这里构建了一个最小的工作示例 https github com sehailey proxytest https github com sehailey proxytest 我已经尝试过 所以我可能已经记不清了 尽管它们
  • 在 sed -i (正则表达式?)bash 内部使用变量

    我看过另一个sed这里的页面 我找不到使用的页面 i在正则表达式搜索部分有一个变量 我正在尝试剪切文件中请求的行myresolv conf并获取其行号 我班5个人都卡住了 任何帮助都很棒 line grep n 3 myresolv con
  • std::u16string、std::u32string、std::string、length()、size()、代码点和字符

    我很高兴看到std u16string and std u32string在 C 11 中 但我想知道为什么没有std u8string处理 UTF 8 情况 我的印象是std string是为UTF 8设计的 但似乎做得不太好 我的意思是
  • VSTO Outlook:获取选定的附件

    我正在尝试对 Outlook 2010 中选定的附件执行操作 我在VS2012中创建了一个Outlook VSTO项目 这是用于在附件功能区上添加按钮的 XML
  • 如何在 WPF 应用程序中动态导入 3D 模型

    我已经搜索了很长一段时间但找不到合适的方法 当用户选择模型时 如何在运行时将 3D 模型导入 WPF 应用程序中 它可以在任何一种流行的 3D 建模软件中构建 例如 3DS max Maya Blender 等 但并非全部 需要导入 3DS
  • Java作业-打印三角形图案?

    我正在为一项任务而苦苦挣扎 我知道这完全是我的错 但我在课堂上落后了 而且在完成这项作业时遇到了困难 我的目标是打印以下图案 使用 嵌套 for 循环 有人能给我一些关于如何解决这个问题的提示吗 我已经成功打印了一个方形的星号 但我无法弄清
  • 在 Chrome 上单击时链接不会获得焦点

    我在 Chrome 上遇到了一个非常奇怪的行为 这对我来说似乎是一个错误 当您单击链接时 该链接没有获得焦点 更糟糕的是 身体反而成为焦点 可以在这里观察到这种行为 http jsfiddle net YfbR7 4 http jsfidd
  • Emacs - 取消定义前缀键

    我设法将 M 大写 em 键定义为 sqlplus 模式下的前缀键 这阻止了我输入 M 如何在此模式下取消设置此前缀键 短期修复 M x local set key M self insert command 长期修复 请在 emacs 文
  • Boost 程序选项 bool 始终为 True

    通过程序选项 我正在检查参数的有效组合 但由于某种原因 gpu 参数是一个布尔值 无论我是否在命令行上将其设置为 false 它始终为 true 如果我在命令行上指定 gpu 选项 有没有办法可以为 false 我希望能够创建一个布尔变量来