#include #include #include #include using namespace std; using namespace boost::program_options; template ostream& operator<<(ostream& os, const vector& v) { copy(v.begin(), v.end(), ostream_iterator(cout, " ")); return os; } int main(int avArgc, char* apArgv[]) { try { // Define the allowed options. bool vBoolOpt; options_description vVisibleOpts("Visible options"); vVisibleOpts.add_options() ( "help,?", "produce help message" ) ( "bool-opt,a", value(&vBoolOpt)->implicit_value(true)->default_value(false), "a boolean option" ); vector vVectorOpt; options_description vHiddenOpts("Hidden options"); vHiddenOpts.add_options() ( "input-file", value< vector >(&vVectorOpt), "input file" ); positional_options_description vPositional; vPositional.add("input-file", -1); options_description vAllOpts; vAllOpts.add(vVisibleOpts).add(vHiddenOpts); options_description vAllowOpts("Allowed options"); vAllowOpts.add(vVisibleOpts); // Parse and store the options. variables_map vVarMap; store(command_line_parser(avArgc, apArgv).options(vAllOpts).positional(vPositional).run(), vVarMap); notify(vVarMap); // Display help or the value of the options. if (vVarMap.count("help") != 0) { cout << vAllowOpts << endl; } else { cout << "vBoolOpt = " << boolalpha << vBoolOpt << endl; cout << "vVectorOpt = " << vVectorOpt << endl; } } catch (exception& e) { cout << e.what() << endl; return 1; } return 0; }