program_options

 

 

1. 首先构造选项描述器options_description,并设定对应的caption

2. 使用add_options(),对options_description对象添加选项,并指定对应的值类型

3. 构造variables_map对象,用来保存输入的命令行的key-value

4. 使用parse_command_line()解析命令行参数,并将其保存到variables_map对象中

5. 使用notify()告诉variables_map对象,并更新所有的命令行参数数据

6. 使用count()函数检测是否还有此选项,如果有便使用opertaor[]取出值,并使用as<T>()将输入的数据转换为自己想要的数据

复制代码
 1 #include<boost/program_options.hpp>
 2 #include <iostream>
 3 #include <exception>
 4 namespace opt = boost::program_options;
 5 
 6 int main(int argc,char* argv[])
 7 {
 8     //创建一个命令行描述
 9     opt::options_description desc("All options");
10  
11     //添加命令行参数描述,以key-value-desciption的形式添加
12     desc.add_options()
13         ("help,h"   ,"help guide")
14         ("port,p"   ,opt::value<int>()        ,"ip port")      
15         ("address,a",opt::value<std::string>(),"ip address");
16 
17     //用来保存命令行的数据        
18     opt::variables_map vm;
19 
20     //检查命令行的参数
21     if (argc < 2 ){
22         std::cerr << desc<< std::endl;
23         return -1;
24     }
25 
26     //读取输入的命令行参数
27     try{
28         opt::store(opt::parse_command_line(argc,argv,desc),vm);
29         opt::notify(vm);
30     }catch(std::exception const& e){
31         std::cout << e.what() << std::endl;
32     }
33 
34     //
35     if(vm.count("help") > 0){
36         std::cout << desc <<std::endl;
37         return -1;
38     }
39 
40     if(vm.count("address") > 0){
41         std::cout  << "ip address is : " << vm["address"].as<std::string>() << std::endl;
42     }
43 
44     if (vm.count("port") > 0){
45         std::cout  << "ip port is : " << vm["port"].as<int>() << std::endl;
46     }
47 
48     return 0;
49 }
复制代码

 

posted @   三岁玩童  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2021-01-02 wheel: function&bind
点击右上角即可分享
微信分享提示