所以我有一个简单的回车符分隔的文件,上面写着:解析简单的语法,只有关键字和数抽取
room(800,400)
place(desk, 5, 6)
place(chair, 8, 5)
place(bed, 6, 6)
place(closet, 1, 4)
我试图存储每个关键字(桌,椅,床和衣柜的发生)和相关的X,Y和存储的地方(不重要!)并提取room
尺寸,并再次在一些地方保存。我的代码如下所示:
#include <iostream>
#include <fstream>
#include <string>
using namepace std;
void Keyword(ifstream & stream, string token) {
string line;
while (getline(stream, line)) {
if (line.find(token) != string::npos) {
cout << line << endl;
if(token == "room") {
//store the numbers and string to somewhere
}
if (token == "table") {
//store the numbers and string to somewhere
}
}
}
cout << token << " Not Found!" << endl;
}
int main()
{
// Shape Grammar Parser
ifstream infile("shape.dat");
Keyword(infile, "room");
return 0;
}
我所试图做的是,当解析器看到place(chair, 8, 5)
它存储在数据结构chair, 8, 5
,或者当它看到房间它提取room, 800, 400
。
然而上述实施打破与此实现我只能提取的椅子,而不是相关的数字。如何做到这一点?我对正则表达式完全没有经验,所以我没有尝试它。
辉煌。这是我一直在寻找的东西! –