功能:解析和保存命令行参数
代码:
#include <iostream>
using namespace std;
//#include "test1.h"
#include <boost/program_options.hpp>
void start(int argc, char *argv[]) {
try
{
map<string, string> ma; //存储命令行参数
//options_description:选项描述器,描述当前的程序定义了哪些选项
boost::program_options::options_description desc("命令选项");
//add_options向option_description对象添加选项
desc.add_options()
("选项1:", boost::program_options::value<string>(), "string")
("选项2:", boost::program_options::value<string>(), "string")
("选项3:", boost::program_options::value<string>(), "string");
//variables_map(选项存储器)是std::map的派生类,可以像关联容器一样使用,
boost::program_options::variables_map vm;
//解析命令行参数,保存到
auto pa = boost::program_options::command_line_parser(argc, argv);
pa.options(desc); //设置可选项
//将解析出的选项存储至variables_map中
boost::program_options::store(pa.run(), vm);
for (auto i = vm.begin(); i != vm.end(); i++) {
//用来存储不确定类型的参数值,必须通过模板成员函数as<type>()做类型转换后,才能获取其具体值.
ma.insert(make_pair(i->first, i->second.as<::string>()));
}
}
catch (const std::exception &)
{
}
}
int main(int argc, char *argv[]) {
start(argc, argv);
return 0;
}