/jargsparser.cxx

A head-only arguments parser(argsparser) c++11 lib; Zhengqiao Wang (2022).

Primary LanguageC++MIT LicenseMIT

JArgsParser

[中文]

JArgsParser is a head-only arguments parser for C++11, by Zhengqiao Wang. You can use it easily by including interface/jargs_parser_api.hpp to your project.

JArgsParser support multi kinds of arguments:

  • position argument: ./JArgsParser a 2 ./src
  • flag argument: ./JArgsParser -d
  • value argument: ./JArgsParser -e 123 -fi 3.14
  • action argument: ./JargsParser -g

Here's the example:

position args

position_args

type check

type check

default help

default help

default version

default version

call help

call help

array input

array input

Installation

Run:

$ npm i jargsparser.cxx

And then include jargs_parser_api.hpp as follows:

#include "node_modules/jargsparser.cxx/interface/jargs_parser_api.hpp"

QuickStart

Download the latest release and put it into your project.

See also in example/helloworld.cpp

Include JArgsParser:

#include "jargs_parser_api.hpp"
using namespace Joger::ArgsParser;

Than, we can use JArgsParser to require:

key type value type required
arg1 position arg int true
arg2 flag arg bool false
arg3 value arg vec<string> false
arg4 action arg action false
JArgsParser arg_parser(argc, argv, "Hello, this is JArgsParser", "https://github.com/ZhengqiaoWang/JArgsParser", "V0.0.2");
arg_parser.setArgument({"arg1", ArgsValType::FLOAT, "This is a position arg"});
arg_parser.setArgument({"arg2", "-b", "--bbb", "This is a flag"});
arg_parser.setArgument({"arg3", "-c", "--ccc", ArgsValType::LIST_STRING, "This is a value arg", false});
arg_parser.setArgument({"arg4", "-d", "--ddd", []()
                        { printf("** yoho! You call the ddd! **\n"); },
                        "This is an action flag"});

Than we parseArgs and get them.

if (false == arg_parser.parseArgs())
{
    printf("failed to parse\n");
    return -1;
}

{
    // arg 1
    double var_arg1{0};
    if (false == arg_parser.getArgument("arg1", var_arg1))
    {
        printf("failed to get arg\n");
        return -1;
    }
    printf("I got arg1: %f\n", var_arg1);
}

{
    // arg 2
    bool var_arg2{false};
    if (false == arg_parser.getArgument("arg2", var_arg2))
    {
        printf("I didn't got arg2\n");
    }
    printf("I got arg2: %s\n", var_arg2 ? "True" : "False");
}

{
    // arg 3
    std::vector<std::string> var_arg3;
    if (false == arg_parser.getArgument("arg3", var_arg3))
    {
        printf("I didn't got arg3\n");
    }
    else
    {
        printf("I got arg3: ");
        for (auto &arg : var_arg3)
        {
            printf("%s ",arg.c_str());
        }
        printf("\n");
    }
}

Congratulations! Now you can use JArgsParser!

Want an advance support?

Sorry, document is not ready now. If you want to get more information, please go to see example/show_all.cpp or ut/main.cpp.

** Now, we have Chinese Document **

Or, may be you can join us.

Stargazers

Stargazers repo roster for @ZhengqiaoWang/JArgsParser

Forkers

Forkers repo roster for @ZhengqiaoWang/JArgsParser



ORG