0

入力が「x」、「y」、および「z」であり、各 commandX()、commandY()、および commandZ() をそれぞれ実行できるとします。毎回入力してEnterキーを押す代わりに(つまり、x(Enter)commandX()が実行されてからy(enter)commandY()が実行されます...)、ユーザーに1行だけ入力させるにはどうすればよいですか(つまり:xyz (enter)) その後、コマンドは入力順に連続して実行されますか? (つまり: x 、 y 、 z では、実行順序は commandX()、次に commandY()、次に commandZ() になります)

4

2 に答える 2

1

std::getlineを使用します。入力ストリームから行全体を抽出し、そこから各コマンドを処理します。これを行うには、出力行をstd::istringstreamでラップすることをお勧めします。

于 2013-02-24T09:32:23.007 に答える
1

あなたはおそらくgetoptを探しています。

それでも、while ループを使用して、同じ結果を得ることができます。

unsigned int i(1);
bool run_x(false), run_y(false), run_z(false);

while (i < argc and argv[i] == '-') {

    switch (argv[i + 1]) {

        case 'x':
            run_x = true;
            i += 2;
            break;

        case 'y':
            run_y = true;
            y_value = argv[i + 1];
            i += 3;
            break;

        case 'z':
            run_z = true;
            i += 2;
            break;

     }

}

そして、プログラムの実行は次のように実行できます。

./program -x -y 10 -z
./program -x -z
./program -z
./program -y 10 -z
...

ブール値とその他の変数を使用して、オプションであるかどうかを制御します。

于 2013-02-24T12:06:26.170 に答える