ユーザーの文字列入力を取得し、空白で解析するプログラムを書いています。
プログラムは、ユーザーが「exit」を入力するまで繰り返しユーザー入力を受け取る必要があるため、すべてのコードを次のように while ループに入れます。
while(cont == true)
{
cin>>command;
string parsedStr[3];
parsedStr[0] = "";
parsedStr[1] = "";
parsedStr[2] = "";
int j = 0;
for(i=0; i<command.size(); i++)
{
if (command[i] == ' ')
{
++j;
}
parsedStr[j] += command[i];
}
cout<<"Command: "<<parsedStr[0]<<"\n";
cout<<"Argument 1: "<<parsedStr[1]<<"\n";
cout<<"Argument 2: "<<parsedStr[2]<<"\n";
/* do my desired operations according to the received command */
}
ただし、これは「execute 12 345」などのコマンドを入力すると、以下の結果が表示され、引数が解析されません。
Command: execute
Argument 1:
Argument 2:
Command: 12
Argument 1:
Argument 2:
Command: 345
Argument 1:
Argument 2:
しかし、パーサーを while ループの外に移動すると、パーサーは完全に機能し、次のように出力されます。
Command: execute
Argument 1: 12
Argument 2: 345
私は何をすべきか?