CentOS7.5下使用Boost.Program_options解析命令行参数

CentOS7.5下使用Boost.Program_options解析命令行参数

  之前在Linux下使用getopt函数解析命令行参数,Boost也提供了Program_options解析命令行参数,现整理如下:

一、安装Boost依赖环境

yum -y install boost-devel boost-static
在这里插入图片描述
Linux下源码编译安装参考官方文档:https://www.boost.org/doc/libs/1_76_0/more/getting_started/unix-variants.html.

二、简单示例

官方参考示例文档:https://www.boost.org/doc/libs/1_76_0/doc/html/program_options/tutorial.html.

// Copyright Vladimir Prus 2002-2004.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)

/* The simplest usage of the library.
 */

#include <boost/program_options.hpp>
namespace po = boost::program_options;

#include <iostream>
#include <iterator>
using namespace std;

int main(int ac, char* av[])
{
    try {

		po::options_description generic("Generic options");
		//help为长参数名,h为短参数名
		generic.add_options()
            ("help,h", "show help.");
			
        po::options_description desc("Allowed options");
        desc.add_options()
            ("compression,c", po::value<double>(), "set compression level")
			("no-name", po::value<string>(), "no name")
        ;

		//不指定参数名时,则默认参数名为no-name
		po::positional_options_description p;
		p.add("no-name", -1);

		po::options_description all;
		all.add(generic).add(desc);
		
		//vm存储参数名-参数值
        po::variables_map vm;        
        //po::store(po::parse_command_line(ac, av, all), vm);
		po::store(po::command_line_parser(ac, av).
          options(all).positional(p).run(), vm);
        po::notify(vm);    

        if (vm.count("help")) {
			//打印帮助信息
            cout << all << "\n";
            return 0;
        }

        if (vm.count("compression")) {
            cout << "Compression level was set to " 
                 << vm["compression"].as<double>() << ".\n";
        } else {
            cout << "Compression level was not set.\n";
        }
		
		if (vm.count("no-name"))
		{
			cout << "no-name are: " 
			<< vm["no-name"].as<string>() << "\n";
		}
    }
    catch(exception& e) {
        cerr << "error: " << e.what() << "\n";
        return 1;
    }
    catch(...) {
        cerr << "Exception of unknown type!\n";
    }

    return 0;
}

1、编译:g++ program_options_test.cpp -o program_options_test -lboost_program_options
2、boost_program_options库位置
在这里插入图片描述
3、查看依赖:ldd program_options_test
在这里插入图片描述
4、测试
(1)打印帮助信息:./program_options_test -h
在这里插入图片描述
(2)设置参数:./program_options_test -c 100 --no-name test
在这里插入图片描述
(3)不输入test的参数名:./program_options_test -c 100 test
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值