设为首页 加入收藏

TOP

Android下可用的wide char 函数库
2014-11-24 11:10:54 来源: 作者: 【 】 浏览:0
Tags:Android 可用 wide char 函数

代码从我的引擎里出来的,编译的时候编译错误自己处理下,ds_string 和 ds_wstring改成 string和wstring 就好了。另外,_XEVOL_BASE_API_ 你自己看着办吧。哈哈。


大部分的函数类似 wcslen的实现是从glibc里来的,问题不大。


主要是swprintf和swscanf函数。


这两个函数在glibc里巨复杂。


这里介绍一下我的处理方式:


对于swscanf 。我只是用来格式化输入一些数据的,不会出现输入字串的现象。于是我是先将它转成 ansi的字串,调用ansi的sscanf函数来完成。


对于swprintf。 则是自己写了一个。最终是分段调用sprintf函数。


第二个部分是编码方式的问题。


在Android低版本中是没有wcstombs这样的函数的,你可以编译过去。但是加载会找到不符号的。


所以,还是别用这样的函数了。


我们这里默认使用多字节编码是utf-8。所以说。所有的char* 都是utf-8字串。那么同样的UnicodeToLocale转出来的就是utf-8字串。 Locale == utf-8。这个在Linux下也是非常合理的。


这组函数类似如下:


XEvol_UnicodeToLocale


XEvol_Utf8ToUnicode。


这里utf-8 utf-16(vc下的wchar_t)和utf-32之间的转换我是扒了iccu的代码。可信度还是非常高的。


有这一套函数可以彻底的跟iconv说拜拜了。


另外,本人还是建议,尽量别用swprintf和swscanf这两个函数,用wstringstring吧。 stlport对这个的支持还是不错的。



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android应用程序在新的进程中启动.. 下一篇Linux下Socket编程带来的尴尬

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·【C语言】动态内存管 (2025-12-27 06:23:20)
·C语言中的内存管理 - (2025-12-27 06:23:16)
·C语言指南:C语言内 (2025-12-27 06:23:14)
·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)