从std :: cin.get读取用户输入

时间:2015-09-25 16:38:49

标签: c++ validation std user-input

我创建了一个DLL,用于打开控制台并读取用户的输入..

现在我遇到了读取用户输入的问题,当输入是一个用函数列出的值时,代码调用函数..

这是我的代码:

void UserTest::Menu() {
char UserInput[256];

centerstring(" <<- Functions ->>\n\n");

centerstring("<<-  VEHICLE  ->>\n");
centerstring("<<-  KEYBIND  ->>\n");
centerstring("<<-  EXECUTE  ->>\n");
centerstring("<<-  CLEAR    ->>\n");

std::cin.clear();
std::cin.sync();

std::cin.get(UserInput, 256);

if (UserInput == "CLEAR"){
    UserTest::ClearConsole();
    UserTest::Menu();
}else{
    if (UserInput == "VEHICLE"){
        centerstring("<<-  VEHICLE    ->>\n");

        UserTest::PreCallVehicle(UserInput);
    }else{
        if (UserInput == ("EXECUTE")){
            centerstring("<<-  SCRIPT    ->>\n");

            UserTest::PreCallScript(UserInput);
        }else{
            if (UserInput == "KEYBIND"){
                centerstring("<<-  KEYBINDS    ->>\n\n\n");

                UserTest::PreCallKeybind();
            }else{
                UserTest::ClearConsole();
                centerstring("<<-  ERROR    ->>\n");
            }
        }
    }
}

}

1 个答案:

答案 0 :(得分:1)

错误是使用operator ==来比较两个char *。虽然这个编译,它肯定不是你期望它做的,因为它比较指针的值而不是字符串。

要进行适当的比较,请使用std :: string,或者,如果必须使用原始C风格的字符串,请使用srncmp()。