如何用{}块C++解析文件

Jef*_*hen 2 c++ parsing

我有这样的文件

EntityName Jaws
{
  Animation WALK
  {
    NumberOfFrames 9
    DirectionOfSprite L
    DirectionGenerate LR
    FPS 9
  }

  Animation IDLE
  {
    NumberOfFrames 6
    DirectionOfSprite L
    DirectionGenerate LR
    FPS 9
  }
  .......
  .......
}
Run Code Online (Sandbox Code Playgroud)

如何在此结构中解析此文件

struct AnimationData
{
  string animationName;
  int noOfFrames;
  eAnimationDataDirection direction;
  int FPS;
};

struct EntityAnimationData
{
  string entityName;
  vector<AnimationData> animationData;

  string getSpriteResourceName(AnimationData animationData, int frameNumber);
};
Run Code Online (Sandbox Code Playgroud)

我想将这些数据存储到结构中.我该如何获得一个干净的解决方案?我已经阅读了文件的基本阅读材料.

这就是我尝试过的

EntityAnimationData parseAnimationData(const char* filename)
{
  EntityAnimationData data;
  ifstream file;
  file.open(filename);
  char output[128];
  string op;
  if (file.is_open())
  {
    while (!file.eof())
    {
      file >> output;
      if(strcmp(parameter,AD_ENTITY_NAME.c_str())==0)
      {
        file >> output;
        data.entityName = output;
        cout<<data.entityName<<endl;
        do
        {
          file >> output;
          cout<<output<<endl;
        }while(strcmp(output,"}")!=0);
      }
    }
  }
  file.close();
  return data;
}
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 6

如果这是你正在制作的游戏,我会考虑更改输入文件格式的详细信息.如果使用现有文件格式,则可以使用库来大大简化解析.

例如,这些相同的数据可以很容易地存储为XML,这允许您使用XML解析器(例如TinyXML-2)来读取数据,并且可能使文件的创建更简单.它还可以更简单地添加更强大的格式问题处理,例如额外的空格等.

  • 由于其简单性,JSON也是一个不错的选择. (3认同)