https://blog.csdn.net/morning_color/article/details/50241987
代码流程
- 构造option_description对象和variables_map对象
- add_options()->向option_description对象添加选项
- parse_command_line()->将命令行输入的参数解析出来
- store()->将解析出的选项存储至variables_map中
- notify()->通知variables_map去更新所有的外部变量
- count()->检测某个选项是否被输入
- operator[]->取出选项的值
#include "business_processer.h"
#include <iostream>
#include <boost/program_options.hpp>
using namespace std;
using namespace boost;
using namespace boost::program_options;
int main(int argc,char* argv[])
{
string config = "";
string data_type = "";
string version = "";
try
{
options_description desc("Allowed options");
desc.add_options()
("help,h", "produce help message")
("config,c", value<string>()->default_value(""), "set config")
("data_type,t", value<string>()->default_value(""), "set data type")
("version,v", value<string>()->default_value(""), "set version");
variables_map vm;
store(parse_command_line(argc, argv, desc), vm);
notify(vm);
if (vm.count("help"))
{
cerr << desc << "\n";
return 1;
}
if (vm.count("config"))
{
if (vm["config"].as<string>().empty())
{
cerr<<"config is empty!!!"<<endl;
return -1;
}
else
{
config = vm["config"].as<string>();
//cerr<<"config is: "<<config<<endl;
}
}
if (vm.count("data_type"))
{
if (vm["data_type"].as<string>().empty())
{
cerr<<"data_type is empty!!!"<<endl;
return -1;
}
else
{
data_type = vm["data_type"].as<string>();
//cerr<<"data_type is: "<<data_type<<endl;
}
}
if (vm.count("version"))
{
if (vm["version"].as<string>().empty())
{
//cerr<<"version is empty!!!"<<endl;
}
else
{
version = vm["version"].as<string>();
//cerr<<"version is: "<<version<<endl;
}
}
}
catch (std::exception& e)
{
cerr<<"error: "+string(e.what())<<endl;
return -1;
}
catch(...)
{
cerr<<"Exception of unknown type!"<<endl;
return -1;
}
search_business::BaseBusiness bp(data_type);
if (false == bp.init(config, version))
{
cerr << "init error" << endl;
return 1;
}
if (bp.work() != 0)
{
cerr << "work error" << endl;
return 2;
}
return 0;
}
网友评论