1

ユーザーの文字列入力を取得し、空白で解析するプログラムを書いています。

プログラムは、ユーザーが「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

私は何をすべきか?

4

1 に答える 1