Murugan.com
Murugan Andezuthu Dharmaratnam

  |  HOME   |  BLOG   |  TWITTER   |  ARTICLES   |  8086  |  C++   |  VC++   |  ASP .NET   |  VB .NET   |  JAVA SCRIPT   |  MS SQL   |  PHP   |  MY   |  VIDEOS   |  DOWNLOADS   |  CONTACT ME   |  



CPP String Tokenizer


Home  > C++  > CPP String Tokenizer 
       
 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;="" }="">
index

CPP String Tokenizer

C Quick Reference for begiiner

C Program to check if a string is a palindrome



  |  HOME   |  BLOG   |  TWITTER   |  ARTICLES   |  8086  |  C++   |  VC++   |  ASP .NET   |  VB .NET   |  JAVA SCRIPT   |  MS SQL   |  PHP   |  MY   |  VIDEOS   |  DOWNLOADS   |  CONTACT ME   |  

Copyright 2009 @ Murugan Andezuthu Dharmaratnam