- Notifications
You must be signed in to change notification settings - Fork32
A simple C++ header only command line argument parser
License
NotificationsYou must be signed in to change notification settings
jamolnng/argparse
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A simple header only command line argument parser
Master | Develop |
---|---|
git clone https://github.com/jamolnng/argparse.gitcd argparsemkdir build&&cd buildcmake ..make
VSCode andCMake Tools extension
TODO
TODO
#include<iostream>#include<iterator>#include"argparse.h"usingnamespaceargparse;intmain(int argc,constchar* argv[]) { ArgumentParserparser("example","Argument parser example"); parser.add_argument() .names({"-v","--verbose"}) .description("verbose level") .required(true); parser.add_argument("-t","--test","test",true) .position(ArgumentParser::Argument::Position::LAST); parser.add_argument("-d","--dtest","dtest",true).position(0); parser.enable_help();auto err = parser.parse(argc, argv);if (err) { std::cout << err << std::endl;return -1; }if (parser.exists("help")) { parser.print_help();return0; }if (parser.exists("v")) {switch (parser.get<unsignedint>("v")) {case2: std::cout <<"an even more verbose string" << std::endl;#ifdef __clang__ [[clang::fallthrough]];#endif// fall throughcase1: std::cout <<"a verbose string" << std::endl;#ifdef __clang__ [[clang::fallthrough]];#endif// fall throughdefault: std::cout <<"some verbosity" << std::endl; } }if (parser.exists("test")) { std::cout << parser.get<std::string>("test") << std::endl; }if (parser.exists("dtest")) { std::cout << parser.get<std::string>("dtest") << std::endl; }}
Example output:
> program "something" -v 2 "something else"an even more verbose stringa verbose stringsome verbositysomething elsesomething> program "something" -v=1 "something else"a verbose stringsome verbositysomething elsesomething> program "something" --verbose "something else"some verbositysomething elsesomething> program -hUsage: example [options...] [t] [d]Options: -v, --verbose verbose level (Required) -t, --test test (Required) -d, --dtest dtest (Required) -h, --help Shows this page > programRequired argument not found: -v
TODO
- Positional argumeents
- More error checking
- Think of more things to do
maketest
TODO
TODO
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
About
A simple C++ header only command line argument parser
Topics
Resources
License
Stars
Watchers
Forks
Packages0
No packages published