Ну, как вы говорите, глобальная строка не сбрасывается каждый раз. Но почему это так, глобальные переменные не работают таким образом. Вы можете точно сбросить глобальную переменную, но правильный способ сделать это - использовать вместо нее локальные переменные. Как правило, вам следует избегать глобальных переменных.
Как насчет этого, я удалил глобальные переменные command
и command_words
и заменил их локальными.
void accept_command()
{
string command=""; // local variable
void validate_command(string command);
cout<<"root\\:>";
getline(cin,command);
validate_command(command);
}
void validate_command(string command)
{
void command_words_calculate(string command, string* command_words);
void accept_command();
string command_words[5]={""}; // local variable
command_words_calculate(command, command_words);
if(command_words[1]=="")
{
cout<<"incomplete command...\n"<<endl;
accept_command();
}
if(command_words[0].compare("create")==0)
{
cout<<"Hello\n"<<endl;
accept_command();
}
}
void command_words_calculate(string command, string* command_words)
{
int i,k=0;
char ch,ch1;
string duplicate="";
for(i=0;i<command.length();i++)
{
ch=command.at(i);
if(ch==' ')
continue;
else
break;
}
command=command.substr(i,command.length());
for(i=0;i<command.length();i++)
{
ch=command.at(i);
if(i!=command.length()-1)
ch1=command.at(i+1);
if(ch==' ')
{
if(i!=command.length()-1&&ch1!=' ')
{
k++;
continue;
}
else if(i==command.length()-1)
{
break;
}
else
continue;
}
else
command_words[k]=command_words[k]+ch;
}
}
Вот как вы должны работать с локальными переменными, которые используют параметры и возвращаемые значения для передачи данных друг другу.