Required and Optional Arguments Using Boost Library Program Options

后端 未结 4 985
情话喂你
情话喂你 2020-12-12 15:07

I\'m using Boost Program Options Library to parse the command line arguments.

I have the following requirements:

  1. Once \"help\" is provided, all the oth
4条回答
  •  伪装坚强ぢ
    2020-12-12 15:34

        std::string conn_mngr_id;
        std::string conn_mngr_channel;
        int32_t priority;
        int32_t timeout;
    
        boost::program_options::options_description p_opts_desc("Program options");
        boost::program_options::variables_map p_opts_vm;
    
        try {
    
            p_opts_desc.add_options()
                ("help,h", "produce help message")
                ("id,i", boost::program_options::value(&conn_mngr_id)->required(), "Id used to connect to ConnectionManager")
                ("channel,c", boost::program_options::value(&conn_mngr_channel)->required(), "Channel to attach with ConnectionManager")
                ("priority,p", boost::program_options::value(&priority)->default_value(1), "Channel to attach with ConnectionManager")
                ("timeout,t", boost::program_options::value(&timeout)->default_value(15000), "Channel to attach with ConnectionManager")
            ;
    
            boost::program_options::store(boost::program_options::parse_command_line(argc, argv, p_opts_desc), p_opts_vm);
    
            boost::program_options::notify(p_opts_vm);
    
            if (p_opts_vm.count("help")) {
                std::cout << p_opts_desc << std::endl;
                return 1;
            }
    
        } catch (const boost::program_options::required_option & e) {
            if (p_opts_vm.count("help")) {
                std::cout << p_opts_desc << std::endl;
                return 1;
            } else {
                throw e;
            }
        }
    

提交回复
热议问题