@@ -5,11 +5,14 @@ A simple header only command line argument parser
55Here is a simple example
66
77``` cpp
8- #include < iostream>
98#include " argparse.h"
109
10+ #include < iostream>
11+ #include < iterator>
12+
1113int main (int argc, char* argv[ ] ) {
12- // run as: [ program name] -a 1 -sdfl --flag -v 1 2.7 3 4 9 8.12 87 6
14+ // run as: [ program name] "0 -c" abc -a 1 -sdfl --flag -v 1 2.7 3 4 9 8.12 87
15+ // [ program name] -sdfv 1 -o "C:\Users\User Name\Directory - Name\file.dat" "C:\Users\User Name 2\Directory 2 - Name 2\file2.dat" C:/tmp/tmp.txt
1316 ArgumentParser parser("Argument parser example");
1417 parser.add_argument("-a", "an integer");
1518 parser.add_argument("-s", "an combined flag", true);
@@ -18,25 +21,39 @@ int main(int argc, char* argv[]) {
1821 parser.add_argument("--flag", "a flag");
1922 parser.add_argument("-v", "a vector", true);
2023 parser.add_argument("-l", "--long", "a long argument", false);
24+ parser.add_argument("--files", "input files", false);
2125 try {
2226 parser.parse(argc, argv);
2327 } catch (const ArgumentParser::ArgumentNotFound& ex) {
2428 std::cout << ex.what() << std::endl;
2529 return 0;
2630 }
2731 if (parser.is_help()) return 0;
28- std::cout << parser.get<int >("a") << std::endl;
32+ std::cout << "a: " << parser.get<int >("a") << std::endl;
2933 std::cout << "flag: " << std::boolalpha << parser.get<bool >("flag")
3034 << std::endl;
3135 std::cout << "d: " << std::boolalpha << parser.get<bool >("d") << std::endl;
3236 std::cout << "long flag: " << std::boolalpha << parser.get<bool >("l")
3337 << std::endl;
3438 auto v = parser.getv<double >("v");
39+ std::cout << "v: ";
3540 std::copy(v.begin(), v.end(), std::ostream_iterator<double >(std::cout, " "));
36- if (v.size()) std::cout << std::endl;
41+ double sum;
42+ for (auto& d : v) sum += d;
43+ std::cout << " sum: " << sum << std::endl;
44+ auto f = parser.getv< std::string > ("files");
45+ std::cout << "files: ";
46+ std::copy(f.begin(), f.end(),
47+ std::ostream_iterator< std::string > (std::cout, " | "));
48+ std::cout << std::endl;
49+ f = parser.getv< std::string > ("");
50+ std::cout << "free args: ";
51+ std::copy(f.begin(), f.end(),
52+ std::ostream_iterator< std::string > (std::cout, " "));
53+ std::cout << std::endl;
3754 return 0;
3855}
3956```
4057
4158## Compiling
42- Just add `argparse.h` to your include path. Requires compiler support for `<regex>` (ex: g++>=4.9)
59+ Just add `argparse.h` to your include path. No longer requires compiler support for `<regex>`
0 commit comments