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