⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stringtokenizer.h

📁 游戏编程精粹6第1章 通用编程,对入门的游戏开发者很有帮助.
💻 H
字号:
#ifndef _STRINGTOKENIZER_H_
#define _STRINGTOKENIZER_H_

#include <stdio.h>
#include <string.h>

class StringTokenizer
{

public:
  StringTokenizer(char *pData, char *pDelimiter)
  {
    data = pData;
    dataLen = (int)strlen(data);
    delimiter = pDelimiter;
    delimiterLen = (int)strlen(pDelimiter);
    offset = 0;
    done = false;
  }

  virtual ~StringTokenizer(){}    

char* nextToken()
  {
    tokenSize = 0;
    token[0] = '\0';
    for(int i = 0; offset < dataLen; i++) 
    {
      token[i] = data[offset];
      token[i+1] = '\0'; // Forces string end. Prevents non-terminated strings.

      for(int d = 0; d < delimiterLen; d++)
      {
        if(token[i] == delimiter[d])
        {
          token[i] = '\0';
          if(offset == dataLen)
            done = true;
          offset++;
          tokenSize = i;
          return token;
        }
      }

      offset++;
    }
    done = true;
    return token;
  }

bool hasMoreTokens() const
  {
    return !done;
  }

int getDataLength() const
  {
    return dataLen;
  }

int getTokenSize() const
  {
    return tokenSize;
  }

int getNumTokens()
  {
    int temp = offset;
    int num = 0;
		bool doneswap = done;	

    while(hasMoreTokens())
    {
      if (nextToken() != NULL)
      {
        ++num;
      }
    }
		
		done = doneswap; // Reset this to it's previous state
    
    offset = temp;
    return num;
  }

void reset()
{
  offset = 0;
}


private:
  char *data;
  char *delimiter;
  int offset;
  bool done;
  int dataLen;
  int delimiterLen;
  int tokenSize;
  char token[512];

};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -