c++ - 如何使用 boost 程序选项获取默认参数值?

标签 c++ boost boost-program-options

我想为我的一些命令行参数使用默认值。我如何告诉 program_options 默认选项是什么,如果用户不提供参数,我如何告诉我的程序使用默认值

假设我想要一个参数,指定要发送的机器人数量,默认值为 3。

robotkill --robots 5 将产生 5 个机器人已经开始了硅革命,而 robotkill(不提供参数)将产生 3 个机器人已经开始了硅革命

最佳答案

当用户不提供这些选项时,

program_options 会自动为选项分配默认值。您甚至不需要检查用户是否提供了给定选项,只需在任何一种情况下使用相同的分配即可。

#include <iostream>
#include <boost/program_options.hpp>

namespace po = boost::program_options;

int main  (int argc, char* argv[]) {

  po::options_description desc("Usage");
  desc.add_options()
    ("robots", po::value<int>()->default_value(3), 
     "How many robots do you want to send on a murderous rampage?");

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

  try {
    po::notify(opts);
  } catch (std::exception& e) {
    std::cerr << "Error: " << e.what() << "\n";
    return 1;
  }

  int nRobots = opts["robots"].as<int>(); 
  // automatically assigns default when option not supplied by user!!

  std::cout << nRobots << " robots have begun the silicon revolution" 
        << std::endl;
  return 0;
}

关于c++ - 如何使用 boost 程序选项获取默认参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10194963/

相关文章:

c++ - boost::icl::interval_map 重叠 union

c++ - 链接到共享的 boost 库让人头疼

c++ - boost::program_options 中的短参数没有长

c++ - boost::program_options bool_switch 使用多次

c++ - 了解低级鼠标和键盘钩子(Hook)(win32)

C++:ptr_container 比较

c++ - uint8_t和unsigned char之间的混淆

c++ - boost Spirit 可以扫描语法树并产生结果吗?

c++ - QLoggingCategory::setFilterRules 用法

c++ - 枚举的 std::unordered_set,调用 find 给出段错误