从c ++中的一行输入读取多个命令

时间:2013-02-24 09:29:41

标签: c++

假设输入可以是'x','y'和'z',并且对于每个commandX(),可以分别执行commandY()和commandZ()。而不是必须键入然后每次按Enter键(即:执行x(输入)commandX()然后执行y(输入)commandY()...)如何让用户将其输入到一行(即:xyz) (输入))然后按照输入的顺序连续发出命令? (即:在x,y,z中执行的顺序是commandX()然后是commandY()然后是commandZ())

2 个答案:

答案 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
...

使用布尔值和其他变量来控制什么是/不可选。