是不是char[i]&0x80 为真就一定是汉字? 希望对汉字处理有研究的能详细解说一下。

wellin 2003-09-25 03:24:00
是不是char[i]&0x80 为真就一定是汉字? 希望对汉字处理有研究的能详细解说一下。
...全文
416 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
AaronChan 2003-09-25
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
using namespace std;

int main(int argc, char* argv[])
{
string user_name;
char per[256] = "sdfsdf爱情是个坏东西!sdfsdf";
char pnew[256] = {0};
unsigned char peru[256];
int i = 0,j;

cout<<per<<endl;
while ((peru[i] = per[i]) != '\0')
i++;

i = 0;
j = 0;
while(peru[i] != '\0')
{
if((int)(peru[i]) >= 128)
{
pnew[j] = peru[i];
i++;
j++;
pnew[j] = peru[i];
i++;
j++;
}
else
i++;
}
cout<<pnew<<endl;

return 0;
}
flyhigh 2003-09-25
  • 打赏
  • 举报
回复
在ANSI C标准中一个汉字由两个字节组成,判断一个字符是否为汉字就是判断第一个字节的最高位是否为1,至于第二个字节没有规定。
用Unicode就简单了,一个汉字和普通字符都占用两字节。
bluebohe 2003-09-25
  • 打赏
  • 举报
回复
: zfive5(醉马不肖) ( ) 信誉:
????什么意思?
醉马不肖 2003-09-25
  • 打赏
  • 举报
回复
胡说
bluebohe 2003-09-25
  • 打赏
  • 举报
回复
是这样子的,从头开始遍历字符串,如果(char[i]&0x80)==0x80,则这个字符和下一个字符组成一个汉字,否则就是英文,这样子是可以的,更通用一些的做法是这样子的,可以在任何语言下区分
int main(int argc, char* argv[])
{
char *str="abc中文汉字def";
char *p=str,*p1;
unsigned short ch;
//str2按字遍历字符串
string str2="";
while(strcmp(p,"")!=0)
{
str2="";
p1=CharNextExA(936,p,0);//936是简体中文
int i=p1-p;
if(i==1)
{
ch=(unsigned char)*p;
str2+=*p;
}else if(i==2)
{
ch=(*p)*256+*(p+1);
str2+=*p;
str2+=*(p+1);
}
p=p1;
// p是剩下的字符串,ch是一个字的值
}
return 0;
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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