argparse.hpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. #ifndef argparse_hpp
  2. #define argparse_hpp
  3. #include <algorithm>
  4. #include <string>
  5. #include <vector>
  6. namespace filval::util{
  7. /// \see http://stackoverflow.com/questions/865668/how-to-parse-command-line-arguments-in-c#868894
  8. class ArgParser{
  9. private:
  10. std::vector <std::string> tokens;
  11. std::string empty_string;
  12. public:
  13. ArgParser (int &argc, char **argv){
  14. for (int i=1; i < argc; ++i)
  15. this->tokens.push_back(std::string(argv[i]));
  16. }
  17. /// @author iain
  18. const std::string& getCmdOption(const std::string &option) const{
  19. std::vector<std::string>::const_iterator itr;
  20. itr = std::find(this->tokens.begin(), this->tokens.end(), option);
  21. if (itr != this->tokens.end() && ++itr != this->tokens.end()){
  22. return *itr;
  23. }
  24. return empty_string;
  25. }
  26. /// @author iain
  27. bool cmdOptionExists(const std::string &option) const{
  28. return std::find(this->tokens.begin(), this->tokens.end(), option)
  29. != this->tokens.end();
  30. }
  31. };
  32. }
  33. #endif // argparse_hpp