CTokenEx - A String Tokenizer Class

WEBINAR: On-demand webcast

How to Boost Database Development Productivity on Linux, Docker, and Kubernetes with Microsoft SQL Server 2017 REGISTER >

Environment: VC++ 6.0 SP3 (using Warning Level 4 in RELEASE Mode), Environments Tested: WinNT 4.0 SP4, Win95

Basically, I saw other string tokenizers here (CodeGuru) and they lacked the functionality I was looking for.  Therefore, I created one for myself using the KISS method.  This is a VERY SIMPLE sample!!!!

Here is a summary of the functionality in the CTokenEx class:
  • Can use "SplitPath" to break-up the path into sections (Drive/Sharename, Directory, Filename, Extention).  Also, recognizes UNC Names (which _tsplitpath doesn't).
  • Can use "Join" to create a CString from a CStringArray with delimiters of your choice.
  • Can use "Split" to break-up a CString into a CStringArray (according to the delimiter).
  • Can use "GetString" to get the first sub-string in a CString (according to the delimiter).
NOTE:
The "Split" and "GetString" functions recognize multiple delimiters as an empty string so that it will NOT add blanks to an Array.  See example code below: :

Say you have a CString that contains: "abc,def,,,ghi,,jkl,,"


  //********************************************************
  // Split Function
  //********************************************************
  //
  // Split will fill an array with:
  //
  // String  Position
  // ======  ========
  // abc     0
  // def     1
  // ghi     2
  // jkl     3
  //
  //********************************************************
  void CTokenDlgDlg::OnSplit() 
  {
     CTokenEx tok;

     // CString for the Split Function
     CString csSplit = "abc,def,,,ghi,,jkl,,";

     // CStringArray to fill
     CStringArray SplitIt;
   
     // Call Split
     tok.Split(csSplit, ",", SplitIt);
  }

  /********************************************************
  // GetString Function
  //********************************************************
  //
  // GetString will return a string:
  //
  // abc
  //     ...and more calls to GetString will return a strings:
  // def
  // ghi
  // jkl
  //
  //********************************************************
  void CTokenDlgDlg::OnGetstring() 
  {
     CTokenEx tok;
     char Buf[254];

     CString csRef = "abc,def,,,ghi,,jkl,,";
     do {
        CString csRet = tok.GetString(csRef, ",");
        // Do something with the returned value.
     } while (!csRef.IsEmpty());
  }

I hope that others find this class useful.

Downloads

Download demo project - 37 Kb
Download source - 99 Kb


Comments

  • Succinct, working, well designed code. Great Job!

    Posted by Legacy on 12/16/2003 12:00am

    Originally posted by: Daniel Kemper

    I didn't want to re-invent the wheel with a new split method, and you have provided just what I need. Thank you.

    -DK

    Reply
  • nice, except

    Posted by Legacy on 07/26/2002 12:00am

    Originally posted by: dave Michmerhuizen

    An option to recognize empty strings would actually be nice - this is often needed and in fact is what i'm looking for right now.

    Reply
  • www.google.com

    Posted by Legacy on 05/27/2002 12:00am

    Originally posted by: Me

    Me

    Reply
  • www.google.com

    Posted by Legacy on 05/27/2002 12:00am

    Originally posted by: Me

    Me

    Reply
  • Very good!

    Posted by Legacy on 02/03/2001 12:00am

    Originally posted by: Christoph

    Hi!

    I like it! Thanks a lot! it is very easy to use it with CSV strings.

    Reply
  • http://objectarx.sarang.net

    Posted by Legacy on 02/23/2000 12:00am

    Originally posted by: Sok Woo, Lim

    Thank you ~~~

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • This IDC study assists senior IT leaders in assessing the current state of their hybrid cloud management processes, governance models, technologies, and skills to identify gaps and create a road map for better aligning the organization's management model and tools with the emerging needs of complex, dynamic self-service hybrid cloud environments. This IDC MaturityScape identifies five maturity stages for hybrid cloud management based on a set of specific people, process, and technology dimensions and outcomes. …

  • Whether you're wondering if the title of "developer" should have your name next to it or you've just started on the path to software success, consider this guide your personal README.md file. (And if that reference didn't make sense to you, read on. It will soon, grasshopper.) This software developer resource guide explores just how in-demand developers are and the growing gap of qualified individuals needed, discusses the many benefits and perks of being a developer, and enlightens you on the myriad of …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date