免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2124 | 回复: 5
打印 上一主题 下一主题

[函数] 问一下关于strlen函数的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-13 10:44 |只看该作者 |倒序浏览
我现在有一个UTF-16BE编码格式的字符串保存在char类型的指针里,我想知道要怎么取到他的长度啊?
如果用strlen中文不会出问题但是如果串里有英文高8位会是0函数就出会问题,得到的不是真正的长度.

我又看了wcslen但实现方法有问题,因为要接收的是wchar_t类型的参数也就里字符串结尾应该会有两个\0
但是我的字符串又不能声名成wchar_t 因为这个UNICODE编码是从iconv函数里转换出来的。。。。

论坛徽章:
0
2 [报告]
发表于 2007-09-13 10:48 |只看该作者
strlen()的参数是一个字符串的话会不会也加上后面的一个0呢?

论坛徽章:
0
3 [报告]
发表于 2007-09-13 10:53 |只看该作者
strlen返回的长度是不含\0的

论坛徽章:
0
4 [报告]
发表于 2007-09-13 10:58 |只看该作者
原帖由 guohaiyun 于 2007-9-13 10:44 发表
我现在有一个UTF-16BE编码格式的字符串保存在char类型的指针里,我想知道要怎么取到他的长度啊?
如果用strlen中文不会出问题但是如果串里有英文高8位会是0函数就出会问题,得到的不是真正的长度.

我又看 ...

自己写一个,用short 代替char。为0时是结束字符

论坛徽章:
0
5 [报告]
发表于 2007-09-13 11:29 |只看该作者
原帖由 zx_wing 于 2007-9-13 10:58 发表

自己写一个,用short 代替char。为0时是结束字符

那我要是用short不就和用wchar_t一样了吗,现在的问题是之前的函数iconv只能接收char类型的数据,所以转回来的也只能是char类型

论坛徽章:
0
6 [报告]
发表于 2007-09-13 12:42 |只看该作者
你来一个强制类型转换就行了。iconv里面的char*仅表示字节序列而已。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP