Click here to Skip to main content
15,879,535 members
Articles / Desktop Programming / MFC

CDiagramEditor - DIY vector and dialog editor

Rate me:
Please Sign up or sign in to vote.
4.96/5 (165 votes)
23 Jun 2006Public Domain11 min read 503.8K   36.8K   301  
A feature rich vector editor skeleton.
/* ==========================================================================
	CTokeniz

	Author :		Johan Rosengren, Abstrakt Mekanik AB

	Date :			2004-03-31

	Purpose :		CTokenizer is a very simple class to tokenize a string 
					into a string array.	

	Description :	The string is chopped up and put into an internal 
					CStringArray. With GetAt, different types of data can 
					be read from the different elements.

	Usage :			

   ========================================================================*/
#ifndef _TOKENIZER_H_
#define _TOKENIZER_H_

#include <tchar.h>

////////////////////////////////////////////////////////////////////////////
// CTokenizer is a class to tokenize a string
//

class CTokenizer
{
public:
	CTokenizer(CString strInput, const CString& strDelimiter = _T( "," ) )
	{
		Init(strInput, strDelimiter);
	};

	void Init(const CString& strInput, const CString& strDelimiter = _T( "," ) )
	{
		CString copy( strInput );
		m_stra.RemoveAll();
		int nFound = copy.Find( strDelimiter );

		while(nFound != -1)
		{
			CString strLeft;
			strLeft = copy.Left( nFound );
			copy = copy.Right( copy.GetLength() - ( nFound + 1 ) );

			m_stra.Add( strLeft );
			nFound = copy.Find( strDelimiter );
		}

		m_stra.Add( copy );
	};

	int GetSize() const
	{
		return m_stra.GetSize();
	};

	void GetAt( int nIndex, CString& str ) const
	{
		if( nIndex < m_stra.GetSize() )
			str = m_stra.GetAt( nIndex );
		else
			str = _T( "" );
	};

	void GetAt( int nIndex, int& var ) const
	{
		if( nIndex < m_stra.GetSize() )
			var = _ttoi( m_stra.GetAt( nIndex ) );
		else
			var = 0;
	};

	void GetAt( int nIndex, WORD& var ) const
	{
		if( nIndex < m_stra.GetSize() )
			var = ( WORD ) _ttoi( m_stra.GetAt( nIndex ) );
		else
			var = 0;
	};

	void GetAt( int nIndex, double& var ) const
	{
		char   *stop;
		if( nIndex < m_stra.GetSize() )
			var = _tcstod( m_stra.GetAt( nIndex ), &stop );
		else
			var = 0.0;
	};

	void GetAt( int nIndex, DWORD& var ) const
	{
		if( nIndex < m_stra.GetSize() )
			var = ( DWORD ) _ttoi( m_stra.GetAt( nIndex ) );
		else
			var = 0;
	};

private:

	CStringArray m_stra;

};

#endif // _TOKENIZER_H_

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under A Public Domain dedication


Written By
Software Developer (Senior) Abstrakt Mekanik AB
Sweden Sweden
45 years old, married, three kids.

Started with computers more than 20 years ago on a CBM-64.

Read Theoretical Philosophy at the University of Lund.

Working as a C++ consultant developer.

Science-fiction freak. Enjoy vintage punkrock.

Comments and Discussions