program_options

  The program_options library allows program developers to obtain program options, that is (name, value) pairs from the user, via conventional methods such as command line and config file.

1、添加 options_description.

// Declare the supported options.
po::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
("compression", po::value<int>(), "set compression level")
; po::variables_map vm;
po::store(po::parse_command_line(ac, av, desc), vm);
po::notify(vm); if (vm.count("help")) {
cout << desc << "\n";
return ;
} if (vm.count("compression")) {
cout << vm["compression"].as<int>() << ".\n";
}

  使用示例:

  

2、po::value

int opt;
po::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
("optimization", po::value<int>(&opt)->default_value(),
"optimization level")
("include-path,I", po::value< vector<string> >(),
"include path")
("input-file", po::value< vector<string> >(), "input file")
;

  使用示例:
  

3、po::positional_options_description

po::positional_options_description p;
p.add("input-file", -); po::variables_map vm;
po::store(po::command_line_parser(ac, av).
options(desc).positional(p).run(), vm);
po::notify(vm);

  

4、config file

     int opt;
string config_file; // Declare a group of options that will be
// allowed only on command line
po::options_description generic("Generic options");
generic.add_options()
("version,v", "print version string")
("help", "produce help message")
("config,c", po::value<string>(&config_file)->default_value("multiple_sources.cfg"),
"name of a file of a configuration.")
; // Declare a group of options that will be
// allowed both on command line and in
// config file
po::options_description config("Configuration");
config.add_options()
("optimization", po::value<int>(&opt)->default_value(),
"optimization level")
("include-path,I",
po::value< vector<string> >()->composing(),
"include path")
; // Hidden options, will be allowed both on command line and
// in config file, but will not be shown to the user.
po::options_description hidden("Hidden options");
hidden.add_options()
("input-file", po::value< vector<string> >(), "input file")
; po::options_description cmdline_options;
cmdline_options.add(generic).add(config).add(hidden); po::options_description config_file_options;
config_file_options.add(config).add(hidden); po::options_description visible("Allowed options");
visible.add(generic).add(config); po::positional_options_description p;
p.add("input-file", -); po::variables_map vm;
store(po::command_line_parser(ac, av).
options(cmdline_options).positional(p).run(), vm);
notify(vm); ifstream ifs(config_file.c_str());
if (!ifs){
cout << "can not open config file: " << config_file << "\n";
return ;
}
else{
store(parse_config_file(ifs, config_file_options), vm);
notify(vm);
} if (vm.count("help")) {
cout << visible << "\n";
return ;
} if (vm.count("version")) {
cout << "Multiple sources example, version 1.0\n";
return ;
} if (vm.count("include-path")){
cout << vm["include-path"].as< vector<string> >() << "\n";
} if (vm.count("input-file")){
cout << vm["input-file"].as< vector<string> >() << "\n";
} cout << opt << "\n";

  

参考:

1、https://www.boost.org/doc/libs/1_69_0/doc/html/program_options.html

program_options的更多相关文章

  1. boost:program_options

    由于系统库getopt和getopt_long用起来不够直观,仔细看了下boost发现Boost.Program_options可以满足我的需求,它和getopt系列函数一样,可以抓起命令行参数,这里 ...

  2. program_options禁止命令行短参数

    典型的 boost program_options的用法如下: #include <boost/program_options.hpp> using namespace boost::pr ...

  3. [C++Boost]程序参数项解析库Program_options使用指南

    介绍 程序参数项(program options)是一系列name=value对,program_options 允许程序开发者获得通过命令行(command line)和配置文件(config fi ...

  4. boost之program_options库,解析命令行参数、读取配置文件

    一.命令行解析 tprogram_options解析命令行参数示例代码: #include <iostream> using namespace std; #include <boo ...

  5. 使用Boost program_options控制程序输入

    简介 很多人使用界面来输入数据,本文的程序介绍如何使用Boost的program_options控制输入. 程序中使用了: 1. 短选项 2. 可以指定多个参数的选项 程序 #include < ...

  6. boost库中的 program_options

    1.阅读rviz中的源码时在rviz/visualizer_app.cpp中遇到如下代码: po::options_description options; options.add_options() ...

  7. boost::program_options 解析命令行参数

    源码: #include <boost/program_options.hpp> namespace po = boost::program_options; int main(int a ...

  8. Boost命令行解释器的简单使用:Boost.Program_options

    简介 如果使用比较多的命令行程序的话,对于命令行参数的输入肯定不会陌生,大部分的程序都是通过类似下面的形式进行输入的,比如熟悉的ls ls --all -l --color=auto 这里面包含了三种 ...

  9. C++ 系列:编译 boost

    Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...

随机推荐

  1. 多线程、互斥锁、异步、GIL

    多线程-threading python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便被使用 from threading imp ...

  2. Busybox镜像

    使用docker多少还是要知道一些Busybox的知识,下面转载自https://blog.csdn.net/chengqiuming/article/details/79313539 一 简介 Bu ...

  3. redis中key的过期键删除策略

    Redis过期键删除策略 Redis key过期的方式有三种: 被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key 主动删除:由于惰性删除策略无法保证冷数据被及时删 ...

  4. nginx+uwsgi配置

    nginx #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; ...

  5. linux下查看已安装的软件与卸载

    转自:https://blog.csdn.net/qq_22075041/article/details/78855849 因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否 ...

  6. Mysql 分组选择

    Mysql 分组选择 在其他的数据库中我们遇到分组选择的问题时,比如在分组中计算前10名的平均分 我们可以使用row_number()over() 比较方便的得到. 但是在mysql中,问题就被抛了出 ...

  7. js中各种弹窗

    ** * JS提示跳转 * @param  $tip  弹窗口提示信息(为空没有提示) * @param  $type 设置类型 close = 关闭 ,back=返回 ,refresh=提示重载,j ...

  8. 自动生成 java 测试 mock 对象框架 DataFactory-01-入门使用教程

    项目简介 Data-Factory 用于根据对象,随机自动生成初始化信息,避免了手动创建对象的繁琐,便于测试. 特性 8 大基本类型的支持 String.Date.金额,日期等常见类型的支持 java ...

  9. darknet训练yolov3时的一些注意事项

    训练需要用到的文件: 1)       .data文件.该文件包含一些配置信息,具体为训练的总类别数,训练数据和验证数据的路径,类别名称,模型存放路径等. 例如coco.data classes= 8 ...

  10. (11)ssh免密登录配置

    ***在Linux命令行中登录到另一台虚拟机(需要用到ssh协议) Linux中默认有ssh的服务器端和客户端,客户端的名字就叫ssh 前提是当前使用的用户名在待连接的虚拟机中存在 格式:  ssh ...