码迷,mamicode.com
首页 > 编程语言 > 详细

C++截取包含中文字符串函数

时间:2017-05-26 17:57:04      阅读:326      评论:0      收藏:0      [点我收藏+]

标签:截取   val   包含   中文字符串   c++   signed   sub   字符串   invalid   

string utf8_substr(const string& str, unsigned int start, unsigned int len)
{
    if (len==0) { return ""; }
    unsigned int c, i, ix, q, min=string::npos, max=string::npos;
    for (q=0, i=0, ix=str.lenth(); i < ix; i++, q++)
    {
        if (q==start){ min=i; }
        if (q<=start+len || len==string::npos){ max=i; }

        c = (unsigned char) str[i];
        if (c>=0 && c<=127) i+=0;
        else if ((c & 0xE0) == 0xC0) i+=1;
        else if ((c & 0xF0) == 0xE0) i+=2;
        else if ((c & 0xF8) == 0xF0) i+=3;
        else return "";//invalid utf8
    }
    if (q<=start+len || len==string::npos){ max=i; }
    if (min==string::npos || max==string::npos) { return ""; }
    return str.substr(min,max);
}

C++截取包含中文字符串函数

标签:截取   val   包含   中文字符串   c++   signed   sub   字符串   invalid   

原文地址:http://www.cnblogs.com/allanchan/p/utf8_substr.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!