boost::program_options demo

A Simple Demo

  1. //
  2. // Created by Water on 2018/6/9.
  3. //
  4.  
  5. #include <iostream>
  6. #include <string>
  7. #include <boost/program_options.hpp>
  8. namespace  bpo = boost::program_options;
  9.  
  10. int main(int argc, char const *argv[])
  11. {
  12.     bpo::options_description opts("all options");
  13.     bpo::variables_map vm;
  14.  
  15.     opts.add_options()
  16.             ("filename", bpo::value<std::string>(), "the file name which want to be found")
  17.             ("help", "this is a program to find a specified file");
  18.  
  19.     try{
  20.         bpo::store(bpo::parse_command_line(argc, argv, opts), vm);
  21.     }
  22.     catch(...){
  23.         std::cout << "undefined option!\n";
  24.         return 0;
  25.     }
  26.  
  27.     if(vm.count("help") ){
  28.         std::cout << opts << std::endl;
  29.     }
  30.     if(vm.count("filename") ){
  31.         std::cout << "find " << vm["filename"].as<std::string>() << std::endl;
  32.     }
  33.     if(vm.empty() ){
  34.         std::cout << "no options found \n";
  35.     }
  36.     return 0;
  37. }

Test

How to Set Default Value

  1. //
  2. // Created by Water on 2018/6/9.
  3. //
  4.  
  5. #include <iostream>
  6. #include <vector>
  7. #include <string>
  8. #include <boost/program_options.hpp>
  9. namespace bpo = boost::program_options;
  10.  
  11. int main(int argc, char const *argv[])
  12. {
  13.     std::vector<std::string> v_para;
  14.     std::string port;
  15.     int baud = 0;
  16.     int timeout = 0;
  17.     bpo::options_description opt("all options");
  18.  
  19.     opt.add_options()
  20.             ("v_para,v", bpo::value<std::vector<std::string> >()->multitoken(), "Serial v_para")
  21.             ("port,p", bpo::value<std::string>(&port)->default_value("COM1"), "Serial Port")
  22.             ("baud,b", bpo::value<int>(&baud)->default_value(115200), "Serial Baud")
  23.             ("timeout,t", bpo::value<int>(&timeout)->default_value(5000), "Timeout")
  24.             ("help", "a demo ( default value )");
  25.  
  26.     bpo::variables_map vm;
  27.  
  28.     try{
  29.         bpo::store(parse_command_line(argc, argv, opt), vm);
  30.     }
  31.     catch(...){
  32.         std::cout << "undefined option!\n";
  33.         return 0;
  34.     }
  35.  
  36.     bpo::notify(vm);
  37.  
  38.     if(vm.count("help") ){
  39.         std::cout << opt << std::endl;
  40.         return 0;
  41.     }
  42.     if(vm.count("v_para") ){
  43.         std::cout << "v_para:";
  44.         for(auto& str : vm["v_para"].as<std::vector<std::string> >() )
  45.             std::cout << str << " ";
  46.         std::cout << std::endl;
  47.     }
  48.     std::cout << "port:" << port << std::endl;
  49.     std::cout << "baud:" << baud << std::endl;
  50.     std::cout << "timeout:" << timeout << std::endl;
  51.     return 0;
  52. }

Test