64,688
社区成员
发帖
与我相关
我的任务
分享
static int isGB(BYTE ch)
{
if (ch < 0xA1)
return 0; //英文、数字、英文标点
else
{
if (ch == 0xA3)
return 1; // 全角字符
else
return 2; // 汉字
}
}
template <size_t N>
inline bool is_valid(const char (&str)[N])
{
for (size_t i=0; i<N-1 && str[i] != 0; ++i)
{
unsigned char ch = str[i];
char szChinese[3] = {0};
if (ch > 0x8E && ch < 0xFF) //中文字符
{
ch = str[i+1];
if (ch >= 0x40 && ch < 0xFF)
{
szChinese[0] = str[i];
szChinese[1] = str[i + 1];
printf("%s\n", szChinese);
++i;
continue;
}
else
{
return false;
}
}
else if (isdigit(str[i]) || isalpha(str[i])) //英文字符 数字
{
printf("%c\n", str[i]);
continue;
}
}
return true;
}
int main()
{
char cGBKStr[] = "我123是中国Hello人!";
is_valid(cGBKStr);
system("PAUSE");
return 0;
}
/*
我
1
2
3
是
中
国
H
e
l
l
o
人
*/
http://blog.codingnow.com/2010/06/detect_utf-8_gbk.html