// 检验是否包含特殊字符
bool checkTextChineseOrNumberOrLetter(string str)
{
int badNum = 0;
int size = str.length();
if (size <= 0)
return false;
char* pStr = new char[size];
strcpy(pStr, str.c_str());
for (int i = 0; i < size; i++)
{
if (!(pStr[i]>=0 && pStr[i]<=127))
continue;
if (ispunct(pStr[i]))
{
badNum ++;
}
}
delete[] pStr;
bool res = true;
if (badNum > 0)
{
res = false;
}
return res;
}
int main()
{
string szU8 = "asdfghgh中华人1234567890民共和国¥%@#%#¥……&%¥&¥$$$是我的祖国";
if (checkTextChineseOrNumberOrLetter(szU8))
{
cout << "没有特殊字符" << endl;
}
else
{
cout << "包含特殊字符" << endl;
}
getchar();
return 0;
}
其中判断是否为中文的代码:
if (!(pStr[i]>=0 && pStr[i]<=127))
continue;
而ispunct(int )函数为cctype.h中的函数目的:测试字符是否为标点符号或特殊符号。
通过对这个函数简单修改,还可以完成对特殊字符的过滤工作。在此就不过多累赘了。