?? tokenizer.h
字號:
// Tokenizer.h: interface for the CTokenizer class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_TOKENIZER_H__276B4AF7_6FD0_4A64_862D_AD309AA02B4D__INCLUDED_)
#define AFX_TOKENIZER_H__276B4AF7_6FD0_4A64_862D_AD309AA02B4D__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <bitset>
class CTokenizer
{public:
CTokenizer(const CString& cs,const CString& csDelim ):m_cs(cs),m_nCurPos(0)
{
SetDelimiters(csDelim);
}
void SetDelimiters(const CString& csDelim)
{
for(int i=0;i<csDelim.GetLength();++i)
m_sDelimiter.set(static_cast<BYTE>(csDelim[i]));
}
bool Next(CString& cs)
{
cs.Empty();
while(m_nCurPos<m_cs.GetLength()&&m_sDelimiter[static_cast<BYTE>(m_cs[m_nCurPos])])
++m_nCurPos;
if(m_nCurPos>=m_cs.GetLength())
return FALSE;
int nStartPos=m_nCurPos;
while(m_nCurPos<m_cs.GetLength()&&!m_sDelimiter[static_cast<BYTE>(m_cs[m_nCurPos])])
++m_nCurPos;
cs=m_cs.Mid(nStartPos,m_nCurPos-nStartPos);
return TRUE;
}
CString Tail() const
{
int nCurPos=m_nCurPos;
while(nCurPos<m_cs.GetLength()&&m_sDelimiter[static_cast<BYTE>(m_cs[nCurPos])])
++nCurPos;
CString csResult;
if(nCurPos<m_cs.GetLength())
csResult=m_cs.Mid(nCurPos);
return csResult;
}
// virtual ~CTokenizer();
private:
CString m_cs;
std::bitset<256> m_sDelimiter;
int m_nCurPos;
};
#endif // !defined(AFX_TOKENIZER_H__276B4AF7_6FD0_4A64_862D_AD309AA02B4D__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -