boost program_options
使用 program_options 作为 cpp 的命令行解析工具
命名参数
#include <boost/asio.hpp>
#include <boost/program_options.hpp>
#include <cstdint>
#include <iostream>
#include <string>
using namespace std;
namespace asio = boost::asio;
namespace ip = asio::ip;
using tcp = ip::tcp;
using uint16 = uint16_t;
namespace po = boost::program_options;
int main(int argc, char *argv[]) {
po::options_description od("App");
bool help = false;
string listen = "";
int port = 0;
od.add_options()("help,h", po::bool_switch(&help), "print help")(
"listen,l", po::value<string>(&listen)->required(),
"listen addr")("port,p", po::value<int>(&port)->required(), "listen port");
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, od), vm);
po::notify(vm);
if (help) {
cout << od << endl;
}
}
数组参数
vector<string> files;
od.add_options()("files,f", po::value<vector<string>>(&files)->multitoken(),
"input files");
位置参数
vector<string> files;
od.add_options()("files,f", po::value<vector<string>>(&files)->multitoken(),
"input files");
po::positional_options_description pos;
pos.add("files", -1);
po::variables_map vm;
po::store(
po::command_line_parser(argc, argv).options(od).positional(pos).run(),
vm);
po::notify(vm);