区分中英文的字符,只有从字符的码值上进行判断了
英文是采用的ASCII编码,其码值在闭区间[0,255]内
中文是采用的Unicode编码,其码值是大于255的
即:可以判断每个字符的ASCII码值,小于128的可看做英文字符,大于等于128(严格说是连续2个字节都大于等于128)的可以看成汉字。
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string s = "你好CSDN,我的";
string t;
for(int i=0; i<s.length(); i++)
{
if(s[i]<255 && s[i]>0)//扩充的ASCII字符范围为0-255,如是,处理一个字节
{
t.append(s.substr(i,1));
}
else//<0,>255的是汉字,处理两个字节
{
t.append(s.substr(i,2));
++i;
}
}
cout << t << endl;//输出符合要求
return 0;
}