假设输入可以是'x','y'和'z',并且对于每个commandX(),可以分别执行commandY()和commandZ()。而不是必须键入然后每次按Enter键(即:执行x(输入)commandX()然后执行y(输入)commandY()...)如何让用户将其输入到一行(即:xyz) (输入))然后按照输入的顺序连续发出命令? (即:在x,y,z中执行的顺序是commandX()然后是commandY()然后是commandZ())
答案 0 :(得分:1)
使用std::getline。从输入流中提取整行,然后从中处理每个命令。您可能希望将输出行包装在std::istringstream中来执行此操作。
答案 1 :(得分: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
...
使用布尔值和其他变量来控制什么是/不可选。