-
-
[旧帖]
[原创]特殊字符过滤类(申请邀请码)
0.00雪花
-
发表于:
2009-8-13 08:06
1221
-
[旧帖] [原创]特殊字符过滤类(申请邀请码)
0.00雪花
在写程序的时候经常要对字符串里面的特殊字符进行过滤,或进行删除或进行检测,为了使用方面,特写了一下这个类
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的返回值进行判断就可以知道该字符串是否包含特殊字符;
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!