20201229-CPP-关于汉字的内存占用和包含汉字串的长度计算

不多说,直接上代码

/*
    编程计算含有汉字的字符串长度
*/

#include <iostream>
#include <string.h>

using namespace std;

int gbk_strlen(const char * str)
{
    
    
    const char *p = str;
    while(*p)
    {
    
    
        if (*p<0 && (*(p+1)<0 || *(p+1)>63))
        {
    
    
            str++;
            p += 2;
        }
        else
        {
    
    
            p++;
        }
    }
    return p - str;
}

int main(void)
{
    
    
    // 19个ascii字符,加上6个gb2312字符【即汉字】,共25个字符
    char str[] = "abc你好def中国ghi成都1234567890";
    int len = gbk_strlen(str);
    cout << str << endl;
    cout << "len = " << len << endl;
    cout << "取字符串长度:";           // 19 + 6*2 = 31 了个汉字,占两个char的内存空间
    cout << strlen(str) << endl;

    return 0;
}

猜你喜欢

转载自blog.csdn.net/matrixbbs/article/details/111894722