不多说,直接上代码
/*
编程计算含有汉字的字符串长度
*/
#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;
}