void CConsoleApp::ParseCmdline() {
LPTSTR pCmd = GetCommandLine();
tstring cmdline = pCmd;
tstring cmdarg;
bool bFirstArg = true;
tstring::size_type pos = 0;
tstring::size_type pos_start = 0;
tstring::size_type pos_end = cmdline.size();
while( pos < pos_end ) {
if ( cmdline[pos] == _T(' ') ||
cmdline[pos] == _T('\t') ) {
cmdarg = cmdline.substr( pos_start, pos-pos_start );
if ( bFirstArg ) bFirstArg = false;
else AddToArglist( cmdarg );
pos = pos_start = SkipWhitespace( cmdline, pos );
continue;
}
else if ( cmdline[pos] == _T('\"') ) {
tstring::size_type look_ahead;
look_ahead = cmdline.find_first_of( _T("\""), pos+1 );
if ( look_ahead != tstring::npos && !bFirstArg ) {
cmdarg = cmdline.substr( pos_start,
look_ahead-pos_start+1 );
AddToArglist( cmdarg );
pos = pos_start = SkipWhitespace( cmdline,
++look_ahead );
continue;
}
}
pos++;
}
if ( pos > pos_start && !bFirstArg ) {
cmdarg = cmdline.substr( pos_start, pos-pos_start );
AddToArglist( cmdarg );
}
}