- It's simple and obvious!
- It's an OOP way of dealing with arguments.
- Reading docs does not required, your IDE autocomplete will help.
- No external dependencies.
- Can be compiled with C++98 compiler.
- Bonus feature: autogenerated
usage
message.
#include "cpparseopt.h"
#include <iostream>
using namespace cpparseopt;
int main(int argc, char *argv[]) {
Pattern pattern;
Pattern::chain(pattern)
.arg("arg1")
.arg("arg2").defaultVal("default2")
.arg("arg3").descr("descr3")
.arg("arg4").defaultVal("default4").descr("descr4")
.arg("arg5").descr("descr5").defaultVal("default5")
.arg()
.opt("-b").alias("--baz").alias("--bazar").descr("And here we go!")
.flag("-f").alias("--foo").desc("So simple!");
std::cout << pattern.usage() << std::endl;
CmdLineParams params = pattern.match(argc, argv);
std::cout << params.getArg("arg1").asString() << std::endl;
std::cout << params.getArg(5).asDouble() << std::endl;
std::cout << params.getOpt("-b").asInt() << std::endl;
std::cout << params.hasFlag("--foo") << std::endl;
}
- Consider removing Pattern.has(Arg|Opt|Flag)
- Consider making ParsedParam as template class.