In c++. Please need rescurive arrays such as in picture from level 0 to level 1 to level 2. split into recursive functions. Using argumentmanger.h. here it is. #include #include #include #include using namespace std; // This is a class that can parse the commnad line arguments we use in COSC 2430 homework. class ArgumentManager { private: map m_argumentMap; public: ArgumentManager() { } ArgumentManager(int argc, char *argv[], char delimiter=';'); ArgumentManager(string rawArguments, char delimiter=';'); void parse(int argc,char*argv[],char delimiter=';'); void parse(string rawArguments,char delimiter=';'); string get(string argumentName); string toString(); friend ostream&operator<<(ostream &out, ArgumentManager &am); }; void ArgumentManager::parse(string rawArguments, char delimiter) { stringstream currentArgumentName; stringstream currentArgumentValue; bool argumentNameFinished =false; for(unsignedint i=0; i<=rawArguments.length(); i++){ if(i == rawArguments.length()|| rawArguments[i]== delimiter){ if(currentArgumentName.str()!=""){ m_argumentMap[currentArgumentName.str()] = currentArgumentValue.str(); } // reset currentArgumentName.str(""); currentArgumentValue.str(""); argumentNameFinished = false; } elseif(rawArguments[i]=='='){ argumentNameFinished = true; } else{ if(argumentNameFinished){ currentArgumentValue << rawArguments[i]; } else{ // ignore any spaces in argument names. if(rawArguments[i]==' ') continue; currentArgumentName << rawArguments[i]; } } } } void ArgumentManager::parse(int argc, char *argv[], char delimiter) { if(argc >1){ for(int i=1; i::iterator iter = m_argumentMap.find(argumentName); //If the argument is not found, return a blank string. if(iter == m_argumentMap.end()){ return""; } else{ return iter->second; } } string ArgumentManager::toString() { stringstream ss; for(map::iterator iter = m_argumentMap.begin(); iter != m_argumentMap.end(); iter++){ ss << "Argument name: " << iter->first << endl; ss << "Argument value: " << iter->second << endl; } return ss.str(); } ostream& operator << (ostream &out, ArgumentManager &am) { out << am.toString(); return out; }
In c++. Please need rescurive arrays such as in picture from level 0 to level 1 to level 2. split into recursive functions. Using argumentmanger.h. here it is. #include #include #include #include using namespace std; // This is a class that can parse the commnad line arguments we use in COSC 2430 homework. class ArgumentManager { private: map m_argumentMap; public: ArgumentManager() { } ArgumentManager(int argc, char *argv[], char delimiter=';'); ArgumentManager(string rawArguments, char delimiter=';'); void parse(int argc,char*argv[],char delimiter=';'); void parse(string rawArguments,char delimiter=';'); string get(string argumentName); string toString(); friend ostream&operator<<(ostream &out, ArgumentManager &am); }; void ArgumentManager::parse(string rawArguments, char delimiter) { stringstream currentArgumentName; stringstream currentArgumentValue; bool argumentNameFinished =false; for(unsignedint i=0; i<=rawArguments.length(); i++){ if(i == rawArguments.length()|| rawArguments[i]== delimiter){ if(currentArgumentName.str()!=""){ m_argumentMap[currentArgumentName.str()] = currentArgumentValue.str(); } // reset currentArgumentName.str(""); currentArgumentValue.str(""); argumentNameFinished = false; } elseif(rawArguments[i]=='='){ argumentNameFinished = true; } else{ if(argumentNameFinished){ currentArgumentValue << rawArguments[i]; } else{ // ignore any spaces in argument names. if(rawArguments[i]==' ') continue; currentArgumentName << rawArguments[i]; } } } } void ArgumentManager::parse(int argc, char *argv[], char delimiter) { if(argc >1){ for(int i=1; i::iterator iter = m_argumentMap.find(argumentName); //If the argument is not found, return a blank string. if(iter == m_argumentMap.end()){ return""; } else{ return iter->second; } } string ArgumentManager::toString() { stringstream ss; for(map::iterator iter = m_argumentMap.begin(); iter != m_argumentMap.end(); iter++){ ss << "Argument name: " << iter->first << endl; ss << "Argument value: " << iter->second << endl; } return ss.str(); } ostream& operator << (ostream &out, ArgumentManager &am) { out << am.toString(); return out; }
Programming Logic & Design Comprehensive
9th Edition
ISBN:9781337669405
Author:FARRELL
Publisher:FARRELL
Chapter8: Advanced Data Handling Concepts
Section: Chapter Questions
Problem 19RQ
Related questions
Question
In c++. Please need rescurive arrays such as in picture from level 0 to level 1 to level 2. split into recursive functions. Using argumentmanger.h. here it is.
#include <map>
#include <string>
#include <iostream>
#include <sstream>
using namespace std;
// This is a class that can parse the commnad line arguments we use in COSC 2430 homework.
class ArgumentManager {
private:
map<string, string> m_argumentMap;
public:
ArgumentManager() { }
ArgumentManager(int argc, char *argv[], char delimiter=';');
ArgumentManager(string rawArguments, char delimiter=';');
void parse(int argc,char*argv[],char delimiter=';');
void parse(string rawArguments,char delimiter=';');
string get(string argumentName);
string toString();
friend ostream&operator<<(ostream &out, ArgumentManager &am);
};
void ArgumentManager::parse(string rawArguments, char delimiter) {
stringstream currentArgumentName;
stringstream currentArgumentValue;
bool argumentNameFinished =false;
for(unsignedint i=0; i<=rawArguments.length(); i++){
if(i == rawArguments.length()|| rawArguments[i]== delimiter){
if(currentArgumentName.str()!=""){
m_argumentMap[currentArgumentName.str()] = currentArgumentValue.str();
}
// reset
currentArgumentName.str("");
currentArgumentValue.str("");
argumentNameFinished = false;
}
elseif(rawArguments[i]=='='){
argumentNameFinished = true;
}
else{
if(argumentNameFinished){
currentArgumentValue << rawArguments[i];
}
else{
// ignore any spaces in argument names.
if(rawArguments[i]==' ')
continue;
currentArgumentName << rawArguments[i];
}
}
}
}
void ArgumentManager::parse(int argc, char *argv[], char delimiter) {
if(argc >1){
for(int i=1; i<argc; i++){
parse(argv[i], delimiter);
}
}
}
ArgumentManager::ArgumentManager(int argc, char *argv[], char delimiter) {
parse(argc, argv, delimiter);
}
ArgumentManager::ArgumentManager(string rawArguments, char delimiter) {
parse(rawArguments, delimiter);
}
string ArgumentManager::get(string argumentName) {
map<string, string>::iterator iter = m_argumentMap.find(argumentName);
//If the argument is not found, return a blank string.
if(iter == m_argumentMap.end()){
return"";
}
else{
return iter->second;
}
}
string ArgumentManager::toString() {
stringstream ss;
for(map<string, string>::iterator iter = m_argumentMap.begin(); iter != m_argumentMap.end(); iter++){
ss << "Argument name: " << iter->first << endl;
ss << "Argument value: " << iter->second << endl;
}
return ss.str();
}
ostream& operator << (ostream &out, ArgumentManager &am) {
out << am.toString();
return out;
}
Expert Solution
This question has been solved!
Explore an expertly crafted, step-by-step solution for a thorough understanding of key concepts.
This is a popular solution!
Trending now
This is a popular solution!
Step by step
Solved in 2 steps with 4 images
Knowledge Booster
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.Recommended textbooks for you
Programming Logic & Design Comprehensive
Computer Science
ISBN:
9781337669405
Author:
FARRELL
Publisher:
Cengage
Programming Logic & Design Comprehensive
Computer Science
ISBN:
9781337669405
Author:
FARRELL
Publisher:
Cengage