#include #include using namespace std; void Usage(char * progname); void PrintGreeting(string greeting , int start, int end); void GetMandN(const char * param,int & start,int & end); int main(int argc, char * argv[]) { string greeting = "hello"; int greetCount = 1; bool reverse = false; int charStart = 0; int charEnd = -1; int i; i = 1; while (i < argc) { if (!strcmp(argv[i],"-h") or !strcmp(argv[i],"--help")) { Usage(argv[0]); i++; } else if (!strcmp(argv[i],"-r") or !strcmp(argv[i],"--reverse")){ reverse = true; i++; } else if (!strcmp(argv[i],"-g") or !strcmp(argv[i],"--greeting")) { i++; if (i < argc) { greeting = argv[i]; i++; } else { cerr <<"Error: " << argv[i-1] << " requires a string" << endl; } } else if (!strncmp(argv[i],"-g",2)) { greeting = argv[i]; greeting = greeting.substr(2,greeting.size()); i++; } else if (!strncmp(argv[i],"--greeting=",11)) { greeting = argv[i]; greeting = greeting.substr(11,greeting.size()); i++; } else if (!strcmp(argv[i],"-m")) { i++; if (i < argc) { greetCount = atoi(argv[i]); i++; } else { cerr << "\t-m requires an integer argument" << endl; } } else if (!strcmp(argv[i],"-x")) { i++; if (i < argc) { GetMandN(argv[i],charStart,charEnd); i++; } else { cerr << "\t-x requires an argument" << endl; } } else if (!strncmp(argv[i],"--range=",8)) { string tmp = argv[i]; tmp = tmp.substr(8, string::npos); GetMandN(tmp.c_str(),charStart,charEnd); i++; } else { cerr << "Unknown argument " << argv[i] << endl; Usage(argv[0]); i++; } } // fix a value at the end. if (greetCount < 1 or greetCount > 100) { cerr << "\tNumber of greetings shold be between 1 and 100, setting to 1" << endl; greetCount = 1; } // perform a task. if (reverse) { string tmp; for (size_t j=greeting.size()-1; j != 0; j--) { tmp += greeting[j]; } tmp += greeting[0]; greeting = tmp; } for(i=0;i int(greeting.size())) { end = greeting.size(); } for (i = start; i