繁体   English   中英

如何使用Boost程序选项获取默认参数值?

[英]How do I get default argument values with boost program options?

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

假设我想使用一个参数来指定要发送致命性横冲直撞的机器人数量,默认值为3。

robotkill --robots 5将产生5 robots have begun the silicon revolution ,而robotkill (未提供任何论据)将产生3 robots have begun the silicon revolution

当用户不提供选项时, 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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM