#ifndef arg_parser_h #include #include // for formatting error msgs class arg_parser{ public: int argc; char** argv; std::string cur; arg_parser(const int _argc, char** _argv) : argc(_argc), argv(_argv) {} std::string next(){ cur = *argv++; argc--; return cur; } // see if cur arg is a prefix of patt */ int prefix(const std::string patt, const int need){ if (cur != patt.substr(0, cur.length())) return 0; if (need > argc){ ostringstream buf; buf << "Option " << cur; if (need ==1) buf << " requires an argument."; else buf << " requires " << need << " arguments."; throw buf.str(); } return 1; } int prefix(const std::string patt){ return prefix(patt, 0); } }; #define arg_parser_h #endif