是不是char[i]&0x80 为真就一定是汉字? 希望对汉字处理有研究的能详细解说一下。 是不是char[i]&0x80 为真就一定是汉字? 希望对汉字处理有研究的能详细解说一下。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是这样子的,从头开始遍历字符串,如果(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;} : zfive5(醉马不肖) ( ) 信誉:????什么意思? 在ANSI C标准中一个汉字由两个字节组成,判断一个字符是否为汉字就是判断第一个字节的最高位是否为1,至于第二个字节没有规定。用Unicode就简单了,一个汉字和普通字符都占用两字节。 #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;} 请问VC中的命令行编译器在哪儿?怎么进入啊? 图像识别技术交流群 定义为 packed 结构时需加的头文件时什么呀? 我这没有msdn ,请各位帮忙 谁有?或者谁知道谁有? 怎样可能在DLL里放个窗口,并调用它? 有谁知道怎样将一个BMP图片变成ICON图片? 问个很简单的问题,微软的mfc是不是完全按标准的c++写的? 窗口句柄的使用问题 像winzip中点击extract弹出的选择目录的对话框怎么做? InstallShield中ActiveX dll的注册 请问,那里有vc++.net下载。谢谢。 求教文件名操作好方法!
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;
}
????什么意思?
用Unicode就简单了,一个汉字和普通字符都占用两字节。
#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;
}