用户输入解析关键字C++
问题描述:
十多年来,我第一次回到编程中,并且我在C++中有点生疏。用户输入解析关键字C++
我决定做一个zork类型的游戏,它有一个基于文本的用户提示对所有玩家的动作,但我想解析字符串输入(我使用getline(cin,MyString))关键字并解释用户。我正在寻找某种别名,以便如果用户输入以下任何一项:yes,y,yes,Yesir,Yessem,Yep,Uh-Huh等,它会将其解释为“是”,并且没有巨大的病例陈述。我将为这些关键字添加一些关键字,并且我想轻松添加更多关键字。
我期待游戏将关键字与文本文件中的关键字列表进行比较,并确定要使用的基本关键字,以便我可以从其输入中确定操作。
是否有任何已建立的库或实践可用于此功能?
目前看是这样的:
Get user input
Check user input for keywords
Put each keyword into a class
assign class variable for the alias aka Keyword.type()="yes" or Keyword.type()="north"
Perform action based on keywords
任何帮助将不胜感激。
答
比方说,你有一个动作类的所有可能的情况。
class Action
{
public:
virtual void doAction(YourGame*)=0;
};
class YesAction : public Action
{
public:
void doAction(YourGame* game) {/* your yes logic */}
};
class NoAction : public Action
{
public:
void doAction(YourGame* game) {/* your no logic */}
};
然后,在你YourGame
,有std::map<std::string, Action*> actionMap
。
Action* yesAction = new YesAction();
actionMap["yes"] = yesAction;
actionMap["yep"] = yesAction;
actionMap["yeah"] = yesAction;
当你获取用户输入,使用actionMap.find(userInput)
得到的可能的行动,如果它不是actionMap.end()
(这意味着没有这样的行动),叫你得到的Action实例的doAction。
您还希望具有诸如isValid
之类的函数,用于检查给定操作是否对YourGame
中的当前状态有效。 doAction可能会调用YourGame函数,甚至改变状态。