UTF8编码字符串截取

对采用UTF8编码的字符进行截取.指定起始字符和终止字符,把相应的UTF8编码串复制到缓冲区中.

/*
* text:采用UTF8编码存储的字符串.
* s:截取时的起始字符,从0开始.
* e:截取的字符数.为10则截取10个字符.
* buffer:存储截取的字符串
*/
int
StringUTF8Crop(const char* text,const int s,const int e,char* buffer){ int i=0,count=0; int k=0; char ch; while(count<s&&text[i]){ count++; ch=text[i]; if(ch&0x80){ while(ch&0x80){ ch<<=1; i++; } } else i++; } while(count<s+e&&text[i]){ count++; ch=text[i]; if(ch&0x80){ while(ch&0x80){ ch<<=1; buffer[k++]=text[i++]; } } else{ buffer[k++]=text[i++]; } } return k; }
int main(int args,char* argv[]){
    HANDLE x;
    HANDLE y;
    HANDLE z;
    char* text="一二三四五六七八九十2";
    char buffer[100]={0};
    StringUTF8Crop(text,1,10,buffer);
    printf("buffer :%s\n",buffer);
    return 0;
}

输出结果 :

二三四五六七八九十2

注意:

windows下会显示乱码.原因是windows控制台默认是gbk编码.需要更改代码页为65001并且还要更改字体.

转载于:https://www.cnblogs.com/OneL1fe/p/6674206.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值