首页
社区
课程
招聘
[旧帖] [原创]特殊字符过滤类(申请邀请码) 0.00雪花
发表于: 2009-8-13 08:06 1221

[旧帖] [原创]特殊字符过滤类(申请邀请码) 0.00雪花

2009-8-13 08:06
1221
在写程序的时候经常要对字符串里面的特殊字符进行过滤,或进行删除或进行检测,为了使用方面,特写了一下这个类
template<typename _T>
class CExcludeCharacter
{   
        public:
        typedef _T* Iter;
        CExcludeCharacter(const _T* ptr,int num, _T sentinel)
        {   
                m_iNum = num;
                m_sentinel = sentinel;
                m_pSpecialCharacters = ptr;
        }

        ~CExcludeCharacter()
        {
                m_pSpecialCharacters = NULL;
        }

        BOOL operator()(_T ch)
        {
                BOOL bExisted = FALSE;
                const _T* pch = NULL;
                pch = find(m_pSpecialCharacters,m_pSpecialCharacters + m_iNum -1,ch);
                if (*pch != m_sentinel)
                {
                        bExisted = TRUE;
                }
                return bExisted;
        }
        private:
        _T m_sentinel;
        int m_iNum;
        const _T* m_pSpecialCharacters;
};

在具体说使用的时候可以通过以下方式进行调用
首先声明要进行检测的特殊字符:
static wchar_t g_szSpecialCharacter[] = {L'\\',L'/',L':',L'*',L'?',L'\"',L'<',L'>',L'|',L'0'};
注:也可以申明为char类型的

一下代码是进行检测的
wstring vSource(tszName,tszName + size);  //该字符串为要进行检测的字符串
wstring::iterator iterCharacter = find_if(vSource.begin(),vSource.end(),CExcludeCharacter<wchar_t>(g_szSpecialCharacter, sizeof(g_szSpecialCharacter)/sizeof(wchar_t),g_szSpecialCharacter[9]));  
if (iterCharacter != vSource.end())
{
//包含特殊字符
}
通过对find_if的返回值进行判断就可以知道该字符串是否包含特殊字符;

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 164
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
沙发  广告招租
2009-8-13 09:09
0
游客
登录 | 注册 方可回帖
返回
//