#include <iostream>#include <vector>#include <string>#include <exception>#include <boost/program_options/options_description.hpp>#include <boost/program_options/variables_map.hpp>#include <boost/program_options/parsers.hpp>intmain(intc,char**v){try{namespacepo=boost::program_options;intdebug;po::options_descriptiondesc("Options");desc.add_options()("output,o","output flag [required]")("quote,q","quote flag")("debug,d",po::value<int>(&debug)->default_value(0),"debug level [0|1|2]");po::options_descriptionhidden("hidden optionis");hidden.add_options()("input",po::value<std::vector<std::string>>(),"input file [at least one required]");po::positional_options_descriptionpositional;positional.add("input",-1);po::options_descriptionvisible("Allowed Options");visible.add(desc);po::options_descriptionfull("Full Options");full.add(desc).add(hidden);po::variables_mapvm;po::store(po::command_line_parser(c,v).options(full).positional(positional).run(),vm);po::notify(vm);boolerror=false;if(!vm.count("output")){std::cerr<<"*** you must specify -o option\n\n";error=true;}if(!vm.count("input")){std::cerr<<"*** you must specify at least 1 input parameter\n\n";error=true;}if(debug<0||debug>2){std::cerr<<"*** debug level must be 0, 1 or 2\n\n";error=true;}if(error){std::cerr<<visible<<"\n";return1;}booloutput=vm.count("output");boolquote=vm.count("quote");if(output){std::cout<<"[オプション情報]\n";std::cout<<"o(output) : "<<(output?"ON":"OFF")<<"\n";std::cout<<"q(quote) : "<<(quote?"ON":"OFF")<<"\n";std::cout<<"d(debug) : "<<debug<<"\n\n";std::cout<<"[パラメタ情報]\n";conststd::vector<std::string>&input=vm["input"].as<std::vector<std::string>>();std::cout<<"指定数 : "<<input.size()<<"\n";for(inti=0;i<input.size();++i)std::cout<<i+1<<" : "<<(quote?"\"":"")<<input[i]<<(quote?"\"":"")<<"\n";}return0;}catch(conststd::exception&e){std::cerr<<e.what()<<"\n";return-1;}}
turugina
#7599()
[
C++
]
Rating0/0=0.00
see: Boost.Program_options
Rating0/0=0.00-0+
[ reply ]