boost/program_options库读取控制台命令行参数

本文介绍如何利用boost库中的program_options模块解析和管理C++应用程序的控制台命令行参数,以便于实现灵活的配置和调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能:解析和保存命令行参数

代码:

#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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值