две команды слов команды C ++ - PullRequest
0 голосов
/ 31 марта 2020

привет, извините, что беспокою вас, я пытаюсь написать команды, состоящие из двух слов, которые пользователь напечатает, скажем, "go север". Я хочу, чтобы моя программа захватила эти оба слова и поместила их отдельно в переменные, программа, которую я пишет, что делает, но когда я набираю одно слово команды, компилятор ждет вторую команду, как я могу написать этот простой способ сказать, если нет второй команды захватить ввод 1 без ожидания второй записи спасибо

    cin >> input1 >> input2;
    if(!(input2==""))
    {
        if (input1 == "take" or input1 == "grab" or input1 == "go")
            input = input2;
        else
            input = input1;
    }
    else
        input = input1;
    input = format(input);

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

если вы хотите получить более длинный ввод, чем одно слово, которое вы хотите использовать std :: getline

std::string command;
std::getline(cin, command);

и для анализа строки вы можете использовать boost :: split

std::vector<std::string> words;
boost::split(words, command, boost::is_any_of(" "));

, поэтому ваш код должен выглядеть примерно так

std::string command;
std::getline(cin, command);
std::vector<std::string> words;
boost::split(words, command, boost::is_any_of(" "));

, и теперь выполните команду check

0 голосов
/ 31 марта 2020

Два варианта: Вы можете использовать std :: getline , чтобы прочитать полную строку и затем проанализировать эту строку. Чтобы исправить код с минимальными изменениями, можно сначала прочитать одно слово, а затем другое, а не оба сразу:

cin >> input1;
if (input1 == "take" or input1 == "grab" or input1 == "go") {
    cin >> input2;
    input = input2;
} else {
    input = input1;
}
...