下例展示了 program_oprations 的基本用法:为程序定义了 3 个参数: help, host, port . 其中 host 与 port 分别定义了简写 h ,p 。host 是必填项, port 是有缺省值(80)的选填项,当 port 有输入时使用输入项,否则使用缺省值 ,当输入了错误的参数时会输出错误信息。
		
		
			
			
				
					
				| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <iostream> #include "boost/program_options.hpp"   using namespace boost;   int main(int argc, char* argv[]) {     program_options::options_description desc("Allowed options");     desc.add_options() 	("help", "help") 	("host,h", program_options::value<std::string>()->required(), "host name") 	("port,p", program_options::value<int>()->default_value(80), "port number");       program_options::variables_map vm;       try     { 	auto ops = program_options::parse_command_line(argc, argv, desc); 	boost::program_options::store(ops, vm);     }     catch (boost::program_options::error& e)     { 	std::cout << e.what() << std::endl; 	return 1;     }       if (vm.count("help"))     { 	std::cout << desc << std::endl;         }       if (!vm.count("host"))     { 	std::cout << "param is need : " << desc << std::endl; 	return 1;     }       //do sth ...       std::cout << "Host is : " 	<< vm["host"].as<std::string>() 	<< ", Port is : " 	<< vm["port"].as<int>() 	<< std::endl;       return 0; } | 
				
			 
		 
测试效果:
		
		
			
			
				
					
				| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | >testBoostProgramOptions.exe param is need : Allowed options:   --help                  help   -h [ --host ] arg       host name   -p [ --port ] arg (=80) port number   >testBoostProgramOptions.exe  -h 127.0.0.1 Host is : 127.0.0.1, Port is : 80   >testBoostProgramOptions.exe  -h 127.0.0.1 -p  8080 Host is : 127.0.0.1, Port is : 8080   >testBoostProgramOptions.exe  -h 127.0.0.1 -p  8080  -o er unrecognised option '-o'   >testBoostProgramOptions.exe  -p  8080 param is need : Allowed options:   --help                  help   -h [ --host ] arg       host name   -p [ --port ] arg (=80) port number | 
				
			 
		 
progma_options 库由三部分组成:
- descrition, 描述组件,用于描述允许的参数及这些参数的值。
- parser, 解析组件,用于解析输入的参数与值
- storage, 存储组件, 它将解析器的输出转换成 字符串表示的健与 C++ 类型的值的 map, 并提供了访问这些值的接口。
对于上例来说, program_options 所做的事情,就是使用 options_description 描述了我们期望的参数,使用 parse_command_line 解析了输入参数并使用 store 将参数存储在 variables_map 中。当我们需要使用某个参数时直接从 variables_map 中获取。
 继续阅读