如何在C ++中使用用户命令来运行一个函数?

时间:2015-02-13 00:52:32

标签: c++ input command

这可能听起来很简单,但我不知道如何使这项工作。我有一组函数放在一起来控制一个行编辑器,但是每个函数对行编辑器都有不同的影响。

无论如何,例如......我有一个名为“setfilename”的函数。我想创建一个用户必须输入的命令,以便用他的特定文件名调用它。

例如,要调用的“setfilename”命令应为“r filename” “它代表”读取文件名“

用户必须输入“r test”作为要读取的测试文件名。

这是否清楚?我怎么能这样做?将会有一个我想要的命令列表,每个命令都会调用不同的函数。

LIST:

string choice;

cout << "What command would you like to perform?" << endl;
cout << "r filename" << endl;
cout << "w filename" << endl;
cout << "q" << endl;
cout << "s n" << endl;
cout << "s m n" << endl;
cout << "i n" << endl;
cout << "l n" << endl;
cout << "d n" << endl;
cout << "d n m" << endl;
cout << "c n" << endl;
cout << "c n m" << endl;
cout << "p n" << endl;
cout << "P n" << endl;
cout << "f string" << endl;
cout << "F string" << endl;
cout << "x string1 string2" << endl; // bonus

while (true)
{

    cout << "INPUT: -> ";
    cin >> choice;

    if (choice=="r filename")
    {
        setfilename(choice)

    }

    else if (choice == "w filename")
    {

        ...
    }

    else if (choice == "quit")
    {
        break;
    }



}

1 个答案:

答案 0 :(得分:1)

你的循环需要看起来更像这样:

while (true)
{
    cout << "INPUT: -> ";
    getline(cin, choice);

    istringstream iss(choice);
    iss >> choice;

    if (choice == "r")
    {
        iss >> choice;
        setfilename(choice);
    }
    else if (choice == "w")
    {
        iss >> choice;
        ...
    }
    else if (choice == "quit")
    {
        break;
    }
}