用户输入解析关键字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函数,甚至改变状态。

你看过Ternary search tree

执行是here.