按一定长度截取utf-8编码的字符串

来源:互联网 发布:2015年中国统计数据库 编辑:程序博客网 时间:2024/05/22 15:57
int getChLength(unsigned char c){if (c < 0x7F) {return 1;}else if ((c & 0xE0) == 0xC0){return 2;}else if ((c & 0xF0) == 0xE0){return 3;}else if ((c & 0xF8) == 0xF0){return 4;}else if ((c & 0xFC) == 0xF8){return 5;}else if ((c & 0xFE) == 0xFC){return 6;}elsereturn -1;}std::string sUtf8Substr(std::string sFormerStr, int iRsltLen){if (sFormerStr.size() <= iRsltLen){return sFormerStr;}char* cbuf  = new char[iRsltLen];memset(cbuf, 0, iRsltLen);int i = 0;int j = 0;while (i < iRsltLen){j = getChLength(sFormerStr[i]);if (j == -1)break;strcat(cbuf, sFormerStr.substr(i, j).c_str());i += j;}std::string sTmp(cbuf);delete [] cbuf;if (sTmp.size() > iRsltLen){sTmp.erase(sTmp.size() - 1 - j, j);}return sTmp;}

1 0
原创粉丝点击