假设输入可以是'x‘、'y’和'z‘,并且对于每个commandX(),可以分别执行commandY()和commandZ()。而不是每次都必须键入然后按enter键(即:x (enter) commandX()执行,然后y (enter) commandY()执行...)如何让用户只在一行中输入命令(例如:x、y、z (enter)),然后按照输入的顺序连续执行命令?(即:在x、y、z中,执行顺序是commandX()、commandY()、commandZ())
发布于 2013-02-24 17:32:23
使用std::getline。从输入流中提取整行,然后处理其中的每个命令。为此,您可能希望将输出行包装在std::istringstream中。
发布于 2013-02-24 20:06:26
您很可能正在寻找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
...使用布尔值和其他变量来控制哪些是可选的,哪些不是可选的。
https://stackoverflow.com/questions/15050388
复制相似问题