I\'m writing Win32 console application, which can be started with optional arguments like this:
app.exe /argName1:\"argValue\" /argName2:\"argValue\"
If your needs are simple, you might want to take a look at Argh!.
It is single header and super easy to use:
int main(int, char* argv[])
{
argh::parser cmdl(argv); // declare
if (cmdl[{ "-v", "--verbose" }]) // use immediately
std::cout << "Verbose, I am.\n";
return EXIT_SUCCESS;
}
By being unintrusive, it doesn't take over you main() function.
From the Readme:
Philosophy
Contrary to many alternatives,
arghtakes a minimalist laissez-faire approach, very suitable for fuss-less prototyping with the following rules:The API is:
- Minimalistic but expressive:
- No getters nor binders
- Just the
[]and()operators.- Easy iteration (range-
fortoo).- You don't pay for what you don't use;
- Conversion to typed variables happens (via
std::istream >>) on the user side after the parsing phase;- No exceptions thrown for failures.
- Liberal BSD license;
- Single header file;
- No non-
stddependencies.
arghdoes not care about:
- How many '
-' preceded your option;- Which flags and options you support - that is your responsibility;
- Syntax validation: any command line is a valid (not necessarily unique) combination of positional parameters, flags and options;
- Automatically producing a usage message.
The only support that Win32 provides for command line arguments are the functions GetCommandLine and CommandLineToArgvW. This is exactly the same as the argv parameter that you have for a console application.
You will have to do the parsing yourself. Regex would be a good option for this.
There is no Win32 support for parsing command-line arguments.
See related articles at MSDN:
Parsing C++ Command-Line Arguments
Argument Definitions
Customizing C++ Command-Line Processing
also look at similar questions:
What parameter parser libraries are there for C++?
Parsing parameters to main()
Option Parsers for C/C++?
What's an effective way to parse command line parameters in C++?
...