I am working on a unix-like file system and I need to take in commands from the command line. Some commands are one argument like mkfs, ls, etc. But some are two commands like mkdir foo, rmfile hello. My question is, how can I parse the string to take in a command (cmd), but also take in a second argument (next)? Here is my code so far: (I have not included the functions for the sake of space)
int main(int argc, char *argv[]){
string cmd;
string next;
while (1){
cout << "Russ_John_Shell> ";
cin >> cmd;
//Checks to see whether the string has a file/directory name after the command
if (next == ""){
//mkfs command
if (cmd == "mkfs"){
makeFS();
}
//exit command
else if (cmd == "exit"){
exitShell();
}
//ls command
else if (cmd == "ls"){
listDir();
}
//command not recognized at all
else {
printf("Command not recognized.\n");
}
}
else{
//mkdir command
if (cmd == "mkdir"){
makeDir(next);
}
//rmdir command
else if (cmd == "rmdie"){
remDir(cmd);
}
//cd command
else if (cmd == "cd"){
changeDir(next);
}
//stat command
else if (cmd == "stat"){
status(next);
}
//mkfile command
else if (cmd == "mkfile"){
makeFile(next);
}
//rmfile command
else if (cmd == "rmfile"){
remFile(next);
}
//command not recognized at all
else {
printf("Command not recognized.\n");
}
}
}
}
Thanks in advance for any help!