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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2021-01-02 wheel: function&bind