Я строю текстовую игру на C++ в качестве побочного проекта в своем обучении, и поэтому я пытаюсь найти способ для строки, которая будет оцениваться в двух половинах. Он проверит первое слово, затем, если слово будет распознано, он увидит, что это за слово. Например, если вход в getln(); это «взять яблоко», он распознает «взять», а затем проверяет, что именно вы делаете во второй половине строки. Прямо сейчас единственный способ, которым я могу это сделать, - это игрок, входящий в «take», и это приводит к тонне вложенных операторов if/else.Сравните строку в две половины
ответ
Что я хотел бы сделать, это получить данные от пользователя, а затем разбить строку, используя «» в качестве разделителя. У вас все еще есть вложенный оператор if, но это избавит пользователя от необходимости вводить ввод дважды.
См. this post, чтобы узнать больше о разбиении строк на C++.
Спасибо, это большая помощь. –
Вы можете попытаться ввести tokenise входную строку в свои компоненты. Тогда, учитывая, что вы используете C++, я хотел бы предложить условную свободной конструкции с polymorphy:
Создать базовый Тип:
class Command {
public:
virtual void exec(::std::vector<::std::string> parameters) = 0;
};
Затем создать подкомандами, например:
class TakeCommand : public Command {
public:
virtual void exec(::std::vector<::std::string> parameters);
};
Тогда, во время запуска, строить из себя, словарь (или Trie, если вы чувствуете себя денди) типа
::std::map<::std::string,::std::shared_ptr<Command>> commandProcessor;
Как это карта, вы можете проверить, если команда существует:
auto const it = commandProcessor.find(tokens[0]);
if (it != commandProcessor.end())
it->second->exec(tokens);
// you might want to strip the first token from the vector first!
Любой тип/функции вы не знакомы с, вы можете поиска в http://en.cppreference.com/w/
- 1. Разделить строку на две равные половины
- 2. Разделение строки на две половины
- 3. Обрезание UIImage в две половины
- 4. Разделение RelativeLayout на две половины
- 5. Сравните две строки в freemarker
- 6. Сравните две строки в python
- 7. Сравните две даты. Sqlite
- 8. Две половины столбцов и 11 в бутстрапе
- 9. Сравните две таблицы данных
- 10. Сравните две длинные строки
- 11. Сравните две подсети ip
- 12. Сравните две переменные DateTime
- 13. Сравните две статьи
- 14. C++ - сравните две даты
- 15. java Сравните две даты
- 16. Сравните две даты в smarty
- 17. Сравните две строки в C#
- 18. Сравните две переменные в сборке
- 19. Сравните две даты в Angular
- 20. Сравните две таблицы в asp.net
- 21. Сравните строку, давая две возможности для каждого персонажа в Swift
- 22. Сравните две строки с MySQL
- 23. Сравните две строки в javascript/jquery
- 24. Наименьшее количество избирателей, учитывая две половины
- 25. Разделение плоскости точек на две равные половины
- 26. Split список на две равные половины (± 1)
- 27. Разделение кругового связанного списка на две половины
- 28. Разделите беззерновую кривую на две равные половины
- 29. Сравните строку в Unix
- 30. Как разделить две кнопки на две половины макета?
Чтобы избежать цепи 'если/else' заявления , используйте 'std :: unordered_map>' для проверки и отправки команд –