|
|
Few Bits of Code
1.
String Tokenizer
String tokenizer class allows an application to break a string into tokens
Create a instance passing parameter the string to be tokenized and use NextToken() to restive the Tokens.
2.
1
STRING TOKENIZER
/*------------------------------------------------------------------------
* The string tokenizer class allows an application to break a string into tokens
* String Tokenizer : Header File
* File Name : StringTokenizer.h
* By : Murugan Andezuthu Dharmaratnam
* Revision : Nov 1 2004
*
-------------------------------------------------------------------------*/
class StringTokenizer
{
private:
char* lpszTokenizerStringHead;
char* lpszTokenizerString;
char* lpszDelimiter;
bool IsDelimiter(char*,char*);
void CountNumberOfTokens();
int iNumberOfTokens;
public:
SetStringToken(char*,char*); // New Added
StringTokenizer(); // Constructor
StringTokenizer(char*); // Constructor - IN TokenizerString
StringTokenizer(char*,char*); // Constructor - IN TokenizerString, IN Delimiter
int CountTokens(); // OUT int, Returns The Number Of Tokens
bool HasMoreTokens(); // OUT Bool , Check If more tokens are available from the tokeziners string
char* NextToken(); // OUT String, Returns the Next token from the string Tokenizer
char* NextToken(char*); // IN String Delimiter , OUT String, Returns the Next token from the string Tokenizer
void Reset();
void SetDelimiter(char* strDelimiter);
virtual ~StringTokenizer(); // Destructor
};
/*------------------------------------------------------------------------
* String Tokenizer
* File Name : StringTokenizer.cpp
* OUT : String
* By : Murugan Andezuthu Dharmaratnam
* Revision : Nov 1 2004
*
-------------------------------------------------------------------------*/
#include "stdafx.h"
#include "StringTokenizer.h"
#include "string.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
// Constructor
StringTokenizer::StringTokenizer()
{
}
// Constructor : IN - String
StringTokenizer::StringTokenizer(char* strTokenizer)
{
lpszTokenizerString = new char[strlen(strTokenizer)];
lpszTokenizerStringHead = lpszTokenizerString;
strcpy(lpszTokenizerString,strTokenizer);
strcpy(lpszDelimiter," ");
CountNumberOfTokens();
}
// Set the Delimiter : IN - String
void StringTokenizer::SetDelimiter(char* strDelimiter)
{
strcpy(lpszDelimiter,strDelimiter);
}
// Reset
void StringTokenizer::Reset()
{
lpszTokenizerString = lpszTokenizerStringHead;
}
// Constructor : IN - String , IN - Tokens
StringTokenizer::StringTokenizer(char* strTokenizer,char* strDelimiter)
{
lpszTokenizerString = new char[strlen(strTokenizer)];
lpszTokenizerStringHead = lpszTokenizerString;
lpszDelimiter = new char[strlen(strDelimiter)];
strcpy(lpszTokenizerString,strTokenizer);
strcpy(lpszDelimiter,strDelimiter);
CountNumberOfTokens();
}
// Set the String Token : IN - String , IN - Tokens
StringTokenizer::SetStringToken(char* strTokenizer,char* strDelimiter)
{
lpszTokenizerString = new char[strlen(strTokenizer)];
lpszTokenizerStringHead = lpszTokenizerString;
lpszDelimiter = new char[strlen(strDelimiter)];
strcpy(lpszTokenizerString,strTokenizer);
strcpy(lpszDelimiter,strDelimiter);
CountNumberOfTokens();
}
// Distructor
StringTokenizer::~StringTokenizer()
{
}
// Number of tokens : OUT - Intrger
int StringTokenizer::CountTokens()
{
return iNumberOfTokens;
}
// Check if there are more tokens : OUT - BOOL
bool StringTokenizer::HasMoreTokens()
{
while(IsDelimiter(lpszTokenizerString,lpszDelimiter))
lpszTokenizerString = lpszTokenizerString + 1;
if(*lpszTokenizerString == '\0')
return false;
else
return true;
}
// Get Next Token :: OUT - String
char* StringTokenizer::NextToken()
{
while(*lpszTokenizerString == ' ')
lpszTokenizerString = lpszTokenizerString+1;
int j=0;
char TempString[100];
while(IsDelimiter(lpszTokenizerString,lpszDelimiter))
lpszTokenizerString = lpszTokenizerString + 1;
while(!IsDelimiter(lpszTokenizerString,lpszDelimiter) && (*lpszTokenizerString != '\0'))
{
TempString[j] = *lpszTokenizerString;
lpszTokenizerString = lpszTokenizerString + 1;
j++;
}
TempString[j] = '\0';
char* RetVal = new char[strlen(TempString)];
strcpy(RetVal,TempString);
return RetVal;
}
// Read String till delimiter :: IN - String (Delimiter) , OUT - String
char* StringTokenizer::NextToken(char* delimiter)
{
while(*lpszTokenizerString == ' ' || *lpszTokenizerString == 0xd)
lpszTokenizerString = lpszTokenizerString+1;
int j=0;
char TempString[100];
while(IsDelimiter(lpszTokenizerString,delimiter))
lpszTokenizerString = lpszTokenizerString + 1;
while(!IsDelimiter(lpszTokenizerString,delimiter) && (*lpszTokenizerString != '\0'))
{
TempString[j] = *lpszTokenizerString;
lpszTokenizerString = lpszTokenizerString + 1;
j++;
}
TempString[j] = '\0';
char* RetVal = new char[strlen(TempString)];
strcpy(RetVal,TempString);
return RetVal;
}
void StringTokenizer::CountNumberOfTokens()
{
char *Temp = lpszTokenizerString;
int i=0;
while(*lpszTokenizerString != '\0')
{
while(IsDelimiter(lpszTokenizerString,lpszDelimiter))
lpszTokenizerString = lpszTokenizerString + 1;
while(!IsDelimiter(lpszTokenizerString,lpszDelimiter) && (*lpszTokenizerString != '\0'))
{
lpszTokenizerString = lpszTokenizerString + 1;
}
i++;
}
iNumberOfTokens = i;
lpszTokenizerString = Temp;
}
bool StringTokenizer::IsDelimiter(char* strTokenizerString,char* lpszDelimiter)
{
for(int i = 0; i < (int)strlen(lpszdelimiter);="" i++)="" {="" if(*strtokenizerstring="=" lpszdelimiter[i])="" return="" true;="" }="" return="" false;="" }="" (int)strlen(lpszdelimiter);="" i++)="" {="" if(*strtokenizerstring="=" lpszdelimiter[i])="" return="" true;="" }="" return="" false;="" }="">
|