Environment: All
CCmdLine is a simple way to parse a command line into switches and arguments.
Ex :
Parsing command lines with the standard C string functions (strlen, strcpy, etc.) or even with the CString operators is a nightmare. But, CCmdLine makes it effortless.
CCmdLine was written for use with console apps, but can be easily used in any application which requires command-line parsing.
CCmdLine uses STL for its collection classes, so it works in MFC and non-MFC apps. If you are using this in an MFC app, the switches and arguments will be returned as CStrings. If you are using this in a non-MFC app, they will be returned as STL 'string's.
MyApp.exe -p1 text1 text2 -p2 "this is a big argument" -opt1 -55 -opt2Switches -p1 and -p2 are required.
// if this is an MFC app, uncomment this line
// #include "stdafx.h"
#include "CmdLine.h"
void main(int argc, char **argv)
{
// our cmd line parser object
CCmdLine cmdLine;
// parse the command line
// use __argc and __argv, in MFC apps
if (cmdLine.SplitLine(argc, argv) < 1)
{
// no switches were given on the command line, abort
ASSERT(0);
exit(-1);
}
// test for the 'help' case
if (cmdLine.HasSwitch("-h"))
{
show_help();
exit(0);
}
// StringType is CString when using MFC, else STL's 'string'
StringType p1_1, p1_2, p2_1;
// get the required arguments
try
{
// if any of these GetArgument calls fail,
// we'll end up in the catch() block
// get the first -p1 argument
p1_1 = cmdLine.GetArgument("-p1", 0);
// get the second -p1 argument
p1_2 = cmdLine.GetArgument("-p1", 1);
// get the first -p2 argument
p2_1 = cmdLine.GetArgument("-p2", 0);
}
catch (...)
{
// one of the required arguments was missing, abort
ASSERT(0);
exit(-1);
}
// get the optional parameters
// GetSafeArgument does not throw exceptions, and allows for
// the use of a default value, in case the switch is not found
// convert to an int, default to '100'
int iOpt1Val = atoi( cmdLine.GetSafeArgument( "-opt1", 0, 100 ) );
// since opt2 has no arguments, just test for the presence of
// the '-opt2' switch
bool bOptSwitch2 = cmdLine.HasSwitch("-opt2");
.... and so on....
}
Date Posted: June 16, 1999