Linux console

使用的是关键的函数getopt_long

  1. #include <unistd.h>   
  2.   
  3.        int getopt(int argc, char * const argv[],   
  4.                   const char *optstring);   
  5.   
  6.        extern char *optarg;   
  7.        extern int optind, opterr, optopt;   
  8.   
  9.        #include <getopt.h>   
  10.   
  11.        int getopt_long(int argc, char * const argv[],   
  12.                   const char *optstring,   
  13.                   const struct option *longopts, int *longindex);   
  14.   
  15.        int getopt_long_only(int argc, char * const argv[],   
  16.                   const char *optstring,   
  17.                   const struct option *longopts, int *longindex);
  18. #include "GetOpt.h"   
  19.   
  20. #include<iostream>   
  21.   
  22.   
  23.   
  24. using namespace std;   
  25.   
  26.   
  27.   
  28. const char* program_name;   
  29.   
  30.   
  31.   
  32. void print_usage ()   
  33.   
  34. {   
  35.   
  36.   
  37.   
  38.     cout << "Usage: %s options [outputfile ...]" << endl;   
  39.   
  40.   
  41.   
  42.     cout << " -h --help Display this usage information." << endl;   
  43.   
  44.     cout << " -o --output filename Write output to file." << endl;   
  45.   
  46.     cout << " -v --verbose Print verbose messages." << endl;   
  47.   
  48.   
  49.   
  50. }   
  51.   
  52.   
  53.   
  54. int main (int argc, char* argv[])   
  55.   
  56. {   
  57.   
  58.     int opt;   
  59.   
  60.      
  61.   
  62.     const charconst short_options = "ho:v";   
  63.   
  64.   
  65.   
  66.     const struct option long_options[] = {   
  67.   
  68.         { "help",         no_argument,          NULL,   'h' },   
  69.   
  70.         { "output",     required_argument,  NULL,   'o' },   
  71.   
  72.         { "verbose",   no_argument,          NULL,   'v' },   
  73.   
  74.         { NULL,         no_argument,           NULL,   0 }   
  75.   
  76.     };   
  77.   
  78.   
  79.   
  80.     int verbose = 0;   
  81.   
  82.   
  83.   
  84.     program_name = argv[0];   
  85.   
  86.   
  87.   
  88.     opt = getopt_long (argc, argv, short_options,long_options, NULL);   
  89.   
  90.   
  91.   
  92.     if(opt == -1)   
  93.   
  94.     {   
  95.   
  96.         print_usage();   
  97.   
  98.         exit(0);   
  99.   
  100.     }   
  101.   
  102.     while(opt != -1)   
  103.   
  104.     {   
  105.   
  106.         switch (opt)   
  107.   
  108.         {   
  109.   
  110.             case 'o':   
  111.   
  112.                 cout << "outputfile is: " << optarg << endl;    
  113.   
  114.                 break;   
  115.   
  116.   
  117.   
  118.             case 'v':    
  119.   
  120.                 cout << "print verbose infomation" << endl;   
  121.   
  122.                 break;   
  123.   
  124.   
  125.   
  126.             case '?':   
  127.   
  128.                 cout << "sytax error: no this argument: " << static_cast<char>(optopt) << endl;   
  129.   
  130.                 print_usage();   
  131.   
  132.                 exit(0);   
  133.   
  134.   
  135.   
  136.             case 'h':    
  137.   
  138.                 print_usage ();   
  139.   
  140.                 break;   
  141.   
  142.   
  143.   
  144.             default:    
  145.   
  146.                 break;   
  147.   
  148.         }   
  149.   
  150.         opt = getopt_long (argc, argv, short_options,long_options, NULL);   
  151.   
  152.     }   
  153.   
  154.   
  155.   
  156.     return 0;   
  157.   
  158. }

你可能感兴趣的:(Linux console)