c++ linux 判断string是中文的 or 英文的 字符串。

#include <iostream>  
#include <string.h>  
#include <stdio.h>  
#include <stdlib.h>  
using namespace std;  
/***linux下一个中文占用三个字节,windows占两个字节***/  
void chinese_or_english(char *str)  
{  
  char chinese[4] = {0};  
  for (int i = 0; i < strlen(str); i++) {  
    //if (str[i] >= 0 && str[i] <= 127) {      //ascII  
    if ((str[i] & 0x80) == 0) {   //chinese:the top is 1  
      cout<<"alpha:"<<str[i]<<endl;  
    }  
    //else if (str[i] < 0){  
    else {  
      chinese[0] = str[i];  
      chinese[1] = str[i + 1];  
      chinese[2] = str[i + 2];  
      i++;    //skip one more  
      i++;  
      printf("chinese:%s\n", chinese);  
    }  
  }  
}  
int main()  
{  
  char str[] = "tai太阳yang";  
  cout<<strlen(str)<<endl;  
  chinese_or_english(str);  
  return 0;  
}

判断占用字节数。

int SVPSettingKeyboard::chinese_or_english(std::string str,int index)  
{
    if(index > str.size()-1)
        return 0;
    if((str[index-1]& 0x80) == 0){
        return 1;
    }else{
        int n = 2;
        while(((str[index-n] &0x80) == 0x80 )&&((str[index-n] &0x40) == 0)){
            ++n;
        }
        return n;
    }
}

 

转载于:https://www.cnblogs.com/yuguangyuan/p/8809137.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值