diff --git a/README.md b/README.md index 9d850c8..28ac092 100644 --- a/README.md +++ b/README.md @@ -145,3 +145,23 @@ auto b = program.get("-b"); // true auto c = program.get>("-c"); // {3.14f, 2.718f} auto files = program.get>("--files"); // {"a.txt", "b.txt", "c.txt"} ``` + +### Restricting the set of values for an argument + +```cpp +argparse::ArgumentParser program("test"); + +program.add_argument("input") + .default_value("baz") + .action([=](const std::string& value) { + static const std::vector choices = { "foo", "bar", "baz" }; + if (std::find(choices.begin(), choices.end(), value) != choices.end()) { + return value; + } + return std::string{ "baz" }; + }); + +program.parse_args({ "./test", "fez" }); + +auto input = program.get("input"); // baz +```