在文本冒险中解析匹配多个可能的字符串。

时间:2011-12-07 15:41:00

标签: c++ string io nlp adventure

我在大学的第一个学期,我必须用c ++制作文字冒险游戏。 到目前为止,我们已经完成了数组结构指针。我试图谷歌我的问题,但大多数其他用户使用我们尚未完成的类。

教授希望我们使用Go Northopen door with key等命令 我已经设法通过使用像n这样的热键去北方工作,但显然我想像他希望我们这样做。

所以我的问题是;如何创建一个由多个字符串组成的命令?

问题是我们需要为命令创建库,对象和(如果在这个房间中有可能将两件事组合在一起)介词与另一个对象。在每个库中都应该有使用的单词,例如:命令是:使用,去,谈话,阅读等......

5 个答案:

答案 0 :(得分:1)

取自http://www.cplusplus.com/reference/iostream/istream/getline/

#include <iostream>
using namespace std;

int main () {
  char name[256], title[256];

  cout << "Enter your name: ";
  cin.getline (name,256);

  cout << "Enter your favourite movie: ";
  cin.getline (title,256);

  cout << name << "'s favourite movie is " << title;

  return 0;
}

答案 1 :(得分:0)

尝试搜索getline或scanf函数。两者都从stdin中读取格式化的字符串(在您的情况下是prompt命令)。你也可以直接使用cin,问题是cin返回一个由字符组成的字符串,直到第一个空格。

答案 2 :(得分:0)

如果您正在询问如何阅读多字命令,那么您可以使用getline()将一行输入作为字符串读取,然后使用stringstream来读取该字的每个字。线,这样的事情:

std::string line;
while (std::getline(std::cin, line)) {
    std::istringstream stream(line);
    std::string word;
    while (stream >> word) {
        // do something with this word
    }
}

答案 3 :(得分:0)

  1. 使用std::string input << std::cin;之类的内容输入一行文字。
  2. Split your string用空格/空格字符。
  3. 后续步骤:

    1. command tokenization转换为动词/名词对,例如Open / DoorGo / North
    2. 创建代表您的动词的类,并设计它们以对象或特定名词进行操作
    3. 要查找的一些主题:

答案 4 :(得分:0)

我猜您使用cin来阅读命令?在这种情况下,输入string,使用find查找空格,substr提取命令及其参数。尝试将所有子串转换为小写或大写,因为以后比较它们会更容易。

现在接受命令substring并将其与您拥有的所有命令进行比较。找到匹配项时,调用执行命令的特殊函数,将参数传递给函数。例如,对于“go”命令,您可以使用go函数,该函数将方向作为参数。