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