场景:
1.有时候需要统计utf8字符串的个数,单纯统计字节个数是不行的。
2.有时候也需要获取从某个位置开始的n个连续字符用于显示或计算。
- static int GetUtf8LetterNumber(const char *s)
- {
- int i = 0, j = 0;
- while (s[i])
- {
- if ((s[i] & 0xc0) != 0x80) j++;
- i++;
- }
- return j;
- }
-
- static int GetUtf8Word(const char *s,int wantedNum,int& offset)
- {
- int i = 0, j = 0;
-
- int readedNum = 0;
- int isReach = 0;
- while (s[i])
- {
- if ((s[i] & 0xc0) != 0x80)
- {
- if(isReach)
- {
- break;
- }
- ++j;
- readedNum = j;
- if(j == wantedNum)
- {
- isReach = 1;
- }
-
- }
- ++i;
- }
- offset = i;
- return readedNum;
- }