c/c++ 解析输入参数

1)用#include <getopt.h>中的option解析输入参数

const std::string helpInfo_ =

R"(Usage: test --ipath ./ --debug ./

    --ipath     input file path

    --debug     output file path

    --help      help information

)";


const struct option LongOptions_[] =

{

    {"ipath", required_argument, NULL, 'i'},

    {"debug", required_argument, NULL, 'd'},

    {"help", no_argument, NULL, 'h'},

    {0, 0, 0, 0}

};


int init(int argc, char* argv[])

{

    int error_code = 0;


    try

    {


       int32_t opt = 0;

       int32_t optIndex = 0;


       optind = 1;

       opt = getopt_long(argc, argv, "i:d:h", LongOptions_, &optIndex);


       if (opt == -1)

       {

           std::cout << helpInfo_ << std::endl;

           return 1;

       }


       while (-1 != opt)

       {

           switch (opt)

           {

               case 'i':

                   std::cout << "input file path: " << optarg << std::endl;

                   break;


               case 'd':

                   std::cout << "out file path: " << optarg << std::endl;

                   break;


               case 'h':

                   std::cout << helpInfo_ << std::endl;

                   break;


               default:

                   std::cout << "invalid input parameter:" << std::endl;

                   error_code = 1;

                   break;

           }


           opt = getopt_long(argc, argv, "i:d:h", LongOptions_, &optIndex);

       }

    }

    catch (std::exception& e)

    {

        std::cout << "ctor error: " << e.what();

        error_code = 1;

    }


    return error_code;

}



展开阅读全文

没有更多推荐了,返回首页