boost解析argv
#include <boost/program_options.hpp> namespace po = boost::program_options; bool parse_command_line(int argc, char *argv[], po::variables_map &vm) { po::options_description desc("Allowed options"); desc.add_options() ("help", "produce help message") ("a", po::value<std::string>()->required(), "provide the data base dir") ("b", po::value<std::string>()->required(), "dest dir for save final kv") ("c", po::value<int>()->required(), "provide which frame to start with");try { po::store(po::parse_command_line(argc, argv, desc), vm); if (vm.count("help")) { std::cerr << desc << std::endl; return false; } po::notify(vm); } catch (std::exception& e) { std::cerr << "Error: " << e.what() << "\n"; return false; } catch (...) { std::cerr << "Unknown error!" << "\n"; return false; } return true; }
int main(int argc, char *argv[]) { // parse command lines po::variables_map boost_args; if (!parse_command_line(argc, argv, boost_args)) { std::cerr << "Parse input command line failed." << std::endl; return 1; } cout << boost_args["a"] << endl; }