关键字C++的用户输入解析
User Input parsing for keywords C++
十多年来,我第一次回到编程领域,对C++有点生疏。
我决定制作一个zork类型的游戏,它为所有玩家的动作提供基于文本的用户提示,但我想解析字符串输入(我使用getline(cin,MyString))中的关键字,并解释用户的愿望。我希望有某种别名,这样,如果用户键入以下任何一个:是,y,是,Yesir,Yessem,是,嗯,等等,它就会将其解释为"是",而不会有一个巨大的case语句。我将为一些关键词提供这个,我想轻松添加更多。
我想让游戏将关键字与文本文件中的关键字列表进行比较,并确定要使用的基本关键字,这样我就可以根据他们的输入确定动作。
是否有任何已建立的库或实践可以用于此功能?
目前正在研究这样的东西:
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函数,甚至可以更改状态。
您看过三元搜索树吗?
这里有一个实现。
相关文章:
- C++如何通过用户输入删除列表元素
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 用户定义函数中的指针和输入
- 如何只允许用户输入正整数
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 在C++中,我如何接受不同于同一行的用户输入
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 当用户键入分隔符时,停止getline()输入
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 当用户在qtablewidget中输入单元格时,如何获得信号?C++
- 显示基于用户输入的整数的字符
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 如果用户没有输入任何内容或输入错误,如何重新输入用户的输入?
- 为什么在代码块中执行时会跳过输入用户输入的行?
- 使用 for 循环在数组中输入用户