boost 分析命令行参数

简介: [cpp] view plaincopy   #include    #include    #include    using namespace std;   using namespace  boost::program_options;   int main(i...
[cpp]  view plain copy
 
  1. #include <boost/program_options.hpp>  
  2. #include <iostream>  
  3. #include <vector>  
  4. using namespace std;  
  5. using namespace  boost::program_options;  
  6. int main(int argc, char* argv[])  
  7. {  
  8.   string one ; // 外部变量 存储 参数one的值  
  9.   vector<string> mult;  
  10.   boost::program_options::options_description opts("test options");  
  11.   opts.add_options()  
  12.     ("help,h","help info")  
  13.     ("test1,t",value<string>(),"test aaa ")  
  14.     ("one,o",value<string>(&one)->default_value("one"),"test one default") // 默认值   
  15.     ("mult,m",value<vector<string> >(&mult)->multitoken(),"mult test"); //多个参数  
  16.   
  17.   variables_map vm;  
  18.   try  
  19.   {  
  20.     store(parse_command_line(argc,argv,opts),vm); // 分析参数  
  21.   }  
  22.   catch(boost::program_options::error_with_no_option_name &ex)  
  23.   {  
  24.     cout<<ex.what()<<endl;  
  25.   }  
  26.   
  27.   notify(vm); // 将解析的结果存储到外部变量  
  28.   if (vm.count("help"))  
  29.   {  
  30.     cout<<opts<<endl;  
  31.     return -1;  
  32.   }  
  33.   if(vm.count("test1"))  
  34.   {  
  35.    cout<<vm["test1"].as<string>()<<endl;  
  36.   }  
  37.     
  38.   cout<<one<<endl;  
  39.   cout<<mult.size()<<endl;  
  40.     
  41.   getchar();  
  42.   
  43.   return 0;  
  44. }  

[root@localhost test4]# g++ main.cpp  -l boost_program_options
[root@localhost test4]# ./a.out  -h
test options:
  -h [ --help ]           help info
  -t [ --test1 ] arg      test aaa 
  -o [ --one ] arg (=one) test one default
  -m [ --mult ] arg       mult test


[root@localhost test4]# ./a.out  -m f2 f3 f4 --test1 testbbbb
testbbbb
one
3

目录
相关文章
|
3月前
|
C语言 C++
boost库asio编译及配置
boost库asio编译及配置
113 0
|
24天前
|
C++ Python
【boost】boost1.71安装以及VS2019调用boost.Python
【boost】boost1.71安装以及VS2019调用boost.Python
|
8月前
|
存储 网络协议 API
4.9 C++ Boost 命令行解析库
命令行解析库是一种用于简化处理命令行参数的工具,它可以帮助开发者更方便地解析命令行参数并提供适当的帮助信息。C++语言中,常用的命令行解析库有许多,通过本文的学习,读者可以了解不同的命令行解析库和它们在C++项目中的应用,从而更加灵活和高效地处理命令行参数。
98 0
|
C语言
boost使用log库编译报错
使用boost的log,用以下链接选项: -lboost_system -lboost_thread -lboost_log -lboost_log_setup -lboost_filesystem -lpthread 当...
1640 0
VS2015编译Boost1.64
一、下载并解压:boost1.64.0:http://www.boost.org/users/history/version_1_64_0.html 二、以管理员权限运行VS2015命令行工具   三、cd到boost解压目录   四、运行bootstrap.
1323 0