64,282
社区成员
发帖
与我相关
我的任务
分享
/*!
* @fn bool fn_IsSign(const char *p, int &pos)
* @brief 判断一个符号是否为分隔符
* @param[in] p 符号的指针
* @param[out] pos 返回符号是1字节还是2字节,1字节返回0,2字节返回1
* @return bool 是分隔符返回true,否则返回0
*/
bool fn_IsSign(const char *p, int &pos){
bool blnResult = false;
pos = 0;
unsigned char bchar1 = *p;
//如果是中文
if(bchar1 > 127)
{
pos = 1;
unsigned char bchar2 = *(p+1);
//0xA1A1为全角的空格
if((bchar1==0xA1 && bchar2>=0xA1 && bchar2<=0xFE)
||(bchar1==0xA2 && bchar2>=0xA1 && bchar2<=0xFC)
||(bchar1==0xA3 && bchar2>=0xA1 && bchar2<=0xFE)
||(bchar1==0xA4 && bchar2>=0xA1 && bchar2<=0xF3)
||(bchar1==0xA5 && bchar2>=0xA1 && bchar2<=0xF6)
||(bchar1==0xA6 && bchar2>=0xA1 && bchar2<=0xF5)
||(bchar1==0xA7 && bchar2>=0xA1 && bchar2<=0xF1)
||(bchar1==0xA8 && bchar2>=0x40 && bchar2<=0xE9)
||(bchar1==0xA9 && bchar2>=0x40 && bchar2<=0xEF)
||(bchar1==0xAA && bchar2==0xA5))
{
blnResult = true;
}
}
else
{
pos = 0;
//',.;?"!'
// if (bchar1==0x2C || bchar1==0x2E || bchar1==0x3B || bchar1==0x3E || bchar1==0x3A || bchar1==0x22 || bchar1==0x21
// || bchar1==0x2F || bchar1==0x5C)
//modified by xiaoxin 对于英文只留下数字,大小写字母
if(!((bchar1>=0x30 && bchar1<=0x39) || (bchar1>=0x41 && bchar1<=0x5A) || (bchar1>=0x61 && bchar1<=0x7A)))
{
blnResult= true;
}
}
return blnResult;
}
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
bool isToken(char ch)
{
char token[] = ",.!*<>";
char* p = token;
while (*p)
{
if (*p==ch)
return true;
++p;
}
return false;
}
int main()
{
string str("I am, name. <is> *Hello...!");
string dest;
for (int i=0; i<str.size(); i++)
{
if ( !isToken(str[i]) )
dest.push_back( str[i] );
}
cout << dest << endl;
system("PAUSE");
return 0;
}