avr39-ripe

cmdArgParamParse

May 13th, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. #include <iostream>
  2.  
  3.  
  4. int main(int argc, char** argv)
  5. {
  6.     const int numParamCnt = 2;
  7.     enum numParam { c, b };
  8.     int numParamArr[numParamCnt] {-1, -1};
  9.     for(int i=1; i<argc; i++)
  10.     {
  11.         if (strcmp(argv[i],"-c") == 0)
  12.         {
  13.             if(argv[i+1])
  14.             {
  15.                 numParamArr[c] = atoi(argv[i+1]);
  16.                 if (argv[i+1][0] != '0' and !numParamArr[c])
  17.                 {
  18.                     numParamArr[c] = -1;
  19.                 }
  20.             }
  21.             if (numParamArr[c] == -1)
  22.             {
  23.                 std::cout << argv[0] << " -c needs numeric argument!" << std::endl;
  24.                 return 1;
  25.             }
  26.         }
  27.  
  28.         if (strcmp(argv[i],"-b") == 0)
  29.         {
  30.             if(argv[i+1])
  31.             {
  32.                 numParamArr[b] = atoi(argv[i+1]);
  33.                 if (argv[i+1][0] != '0' and !numParamArr[b])
  34.                 {
  35.                     numParamArr[b] = -1;
  36.                 }
  37.             }
  38.             if (numParamArr[b] == -1)
  39.             {
  40.                 std::cout << argv[0] << " -b needs numeric argument!" << std::endl;
  41.                 return 1;
  42.             }
  43.         }
  44.  
  45.     }
  46.  
  47.     if (numParamArr[c] != -1) //Mandatory parameter
  48.     {
  49.         std::cout << "-c " << numParamArr[c] << std::endl;
  50.     }
  51.     else
  52.     {
  53.         std::cout << argv[0] << " -c number" << std::endl;
  54.         return 1;
  55.     }
  56.  
  57.     if (numParamArr[b] != -1) //Optional parameter
  58.     {
  59.         std::cout << "-b " << numParamArr[b] << std::endl;
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment