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

📄 stringset.h

📁 vc++的部分比较经典的源码
💻 H
字号:
// StringSet.H: interface for the CIVStringSet class.
//
// Written 12 June 2002 by Scot T Brennecke
// Thanks to Moishe Halibard and Moshe Rubin for their article,
//    "A Multiple Substring Search Algorithm" in the June 2002
//    edition of C/C++ Users Journal.  This class is based on
//    the algorthim therein described, but extended to return
//    all strings and use MFC classes.

#pragma once

#pragma warning(disable: 4100 4786)
#include <list>

class CIVStringSet : public CStringArray
{
    public:
        CIVStringSet( WORD wInitialWidth = 64 ) ;  // Initial width of FSM
        virtual ~CIVStringSet() ;

        bool     Add( LPCTSTR pszWord ) ;                     // a single word
        bool     Add( const CString & rstrWord ) ;            // a single word
        int      Add( LPCTSTR pszWords, LPCTSTR pszDelims ) ; // multiple words, delimited with chars from pszDelims
        int      Add( LPCTSTR pszzWords, int nWords ) ;       // nWords words, each 0 term'd, with extra 0 at end
        int      Add( CStringArray astrWords ) ;              // all the elements of a CStringArray
        int      Add( CStringList  lstrWords ) ;              // all the elements of a CStringList

        UINT     FindFirstIn( CString strText, int & rnFirst ) ;    // Begin iteration
        UINT     FindNext( int & rnNext ) ;                         // Continue interation

        typedef std::pair<int,UINT>              CWordPosPair ;     // first is index of word in array, second is position in text
        typedef std::list< std::pair<int,UINT> > CWordPosPairList ; // list of pairs to be returned by FindAllIn
        size_t   FindAllIn( CString strText, CWordPosPairList & rlstrWords ) ; // Iterate all at once and make list

    protected:
        DWORD (* m_apnFSM)[128] ;   // Finite State Machine. Array of 128 char arrays
        size_t   m_nCurDim ;        // Dimension of allocated width of FSM
        size_t   m_nUsedCols ;      // Used portion of allocated width
        WORD     m_wMaxUsedState ;  // largest state value used
        CString  m_strSearch ;      // Current search string
        UINT     m_nCurTextChar ;   // Current position in search string

        bool     InsertWord( LPCTSTR pszWord, WORD wIndex ) ; // put the new word into the FSM for given index
        bool     SetColDim( size_t nNewDim ) ;                // set the current width to at least nNewDim columns

    private:
        // Hide several base class members that shouldn't be used
        // Using these members could cause the index numbers of strings to change, throwing
        //     off the embedded index entries in the FSM
        void SetAt( int nIndex, LPCTSTR newElement ) ;
        void SetAt( int nIndex, const CString & newElement ) ;
        void SetAtGrow( int nIndex, LPCTSTR newElement ) ;
        void SetAtGrow( int nIndex, const CString & newElement ) ;
        int Append( const CStringArray & src ) ;
        void Copy( const CStringArray & src ) ;
        void InsertAt( int nIndex, LPCTSTR newElement, int nCount = 1 ) ;
        void InsertAt( int nIndex, const CString & newElement, int nCount = 1 ) ;
        void RemoveAt( int nIndex, int nCount = 1 ) ;
        void InsertAt( int nStartIndex, CStringArray * pNewArray ) ;
} ;

⌨️ 快捷键说明

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