黑马程序员技术交流社区

标题: 关于 汉字在字符串中的存在方式 [打印本页]

作者: 云霄之上    时间: 2014-7-14 22:35
标题: 关于 汉字在字符串中的存在方式
如果我在一个字符串中存储一些汉字  再用strlen函数计算这个字符串中的字符数 那么一个汉字代表的是一个字符呢  还是三个字符呢?
作者: 温天恩    时间: 2014-7-14 22:40
在C语言中使用strlen函数来求长度时,汉字会当做三个字符来计算。
作者: 温天恩    时间: 2014-7-14 22:55
不同的编译器貌似结果不一样,在MJ老师的视频中,即xcode中显示结果是3,我在win7的visual c++6.0下显示的结果是2.
  1. #include <stdio.h>
  2. #include <string>

  3. void main()
  4. {
  5.         char *p1,*p2;
  6.         p1 = "我很好";
  7.         int a = sizeof("我很好");
  8.         int b = strlen(p1);
  9.         printf("%d,%d\n",a,b);

  10.         p2 = "我";
  11.         int c = sizeof("我");
  12.         int d = strlen(p2);
  13.         printf("%d,%d\n",c,d);
  14. }
复制代码

运行结果是:
7,6
3,2
作者: الغيوم_ا    时间: 2014-7-14 22:56
3个字符
作者: fantacyleo    时间: 2014-7-15 09:27
温天恩 发表于 2014-7-14 22:55
不同的编译器貌似结果不一样,在MJ老师的视频中,即xcode中显示结果是3,我在win7的visual c++6.0下显示的 ...

这应该跟编译器没关系,是编码决定的。xcode应该默认是utf8编码,用1-4字节表示文字,汉字恰好处于3字节的位置。而中文windows下汉字默认是gbk编码,gbk是双字节编码。
作者: chengnuoaini030    时间: 2014-7-15 10:42
是的, 一个汉字代表三个字符
作者: 小海    时间: 2014-7-15 17:19
是三个字符,你可以测试一下的
作者: 温天恩    时间: 2014-7-15 18:15
fantacyleo 发表于 2014-7-15 09:27
这应该跟编译器没关系,是编码决定的。xcode应该默认是utf8编码,用1-4字节表示文字,汉字恰好处于3字节 ...

长进了,以前不知道呢,谢谢了!
作者: 且行且惜    时间: 2014-7-15 18:35
vc中一个汉字是两个字符




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2