什么是解析这些数据的最简单方法?

时间:2014-04-05 12:52:15

标签: c++ string stl fstream stringstream

对于我的游戏,我正在创建一个具有不同数字ID的图块的图块,例如1,28等。此地图数据保存到用户编辑的.dat文件中,看起来有点像这样:

0,83,7,2,4

现在为了让游戏生成正确的图块,它必须看到地图数据显然是什么。我希望这个小解析器做的是跳过空格和逗号,并获取数字数据。此外,我希望它的方式不仅可以获得单个数字的ID号,还可以获得2-3个数字(83等)。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

听起来像strtok函数的工作:

#include <stdlib.h>
#include <string.h>

int parseData(char* data, size_t maxAllowed, int* parsedData) {
  char * pch;
  pch = strtok (data," ,");
  int idx = 0;
  while (pch != NULL)
  {
    parsedData[idx++] = atoi(pch); //convert to integer
    if (i == maxAllowed) {
      break; //reached the maximum allowed
    }
    pch = strtok (NULL, " ,");
  }
  return i; //return the number found
}

//E.g.
char data[] ="0, 83, 7, 2, 4";
int parsedData[5];
int numFound = parseData(data,5,parsedData);

上面的示例将删除所有空格和逗号,返回每个找到的整数值以及找到的元素总数。

使用C函数可以轻松读取文件。您可以一次性读取它,也可以按块读取(为每个块调用函数)。

答案 1 :(得分:0)

这是CSV解析,但很容易在旁观者眼中。取决于你是否想拥有&#34;拥有&#34;代码或使用别人做的。在SO上有两个很好的答案,在快速搜索上有两个好的库。

使用预先编写的解析器的优点是,当需要一些其他功能时,它可能已经存在。