GBK编码的字符判断

__Silent 2011-05-22 10:51:55
请问对于GBK编码的字符串,怎么判断读取的字符串中对于其中一个字符是英文字母、数字、还是中文呢?
...全文
380 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
老邓 2011-05-22
  • 打赏
  • 举报
回复
static int isGB(BYTE ch)
{
if (ch < 0xA1)
return 0; //英文、数字、英文标点
else
{
if (ch == 0xA3)
return 1; // 全角字符
else
return 2; // 汉字
}
}
ryfdizuo 2011-05-22
  • 打赏
  • 举报
回复
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

*/
downmooner 2011-05-22
  • 打赏
  • 举报
回复
http://blog.codingnow.com/2010/06/detect_utf-8_gbk.html

云风的Blog
__Silent 2011-05-22
  • 打赏
  • 举报
回复
谢谢各位,我也做出来了

64,688

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧