android上让我放弃使用wstring来操作中英文字符串

2013-08-07 16:37:24|  分类: cocos2d|举报|字号 订阅

 
 
项目需要,需要对中英文字符串进行遍历修改等,本来wstring和string网上面有一大堆的介绍,其中有一个“跨平台”的方法,但是无奈是用到setlocale这个方法,这个方法在android(NDKR8D)上面无论如何都返回null,也可以看看其源代码(测试版本NDK R8D)

google和度娘上找了我一整天,后来不得不请教himi,himi指了一个方法给我,也解决了我这个需求。最终的不得不放弃使用wstring

 
先感谢一下李华明himi
 
简述一下himi的思路,遍历std:string,判断每个字节的范围是否在[0,127]这个ascii范围内,不是的话,就以长度为3放进一个string里面,最后返回的结果是一个vector<string>,就等于我要用到的wstring了
 
简单代码如下:

vector<string> toVectorCharacters(const string& $str, int $characterWidth) {
int size = $str.size();
vector<string> result;
FOR_LOOP(size, i){
char c = $str[i];
if (c <= 127 && c >= 0) {
string asciiChar($str.begin() + i, $str.begin() + i + 1);
result.push_back(asciiChar);
} else {
string utf8char($str.begin() + i, $str.begin() + i + $characterWidth);
result.push_back(utf8char);
i += $characterWidth - 1;
}
}

return result;
}

android上让我放弃使用wstring来操作中英文字符串 转的更多相关文章

  1. [原] GLES在iOS和Android上的不同

    本来GLES提供了与native platform的接口 EGL, 然而iOS没有使用EGL接口, 而是自己搞了一套,叫做EAGL的类似东西, 虽然说大同小异,但是在做跨平台的时候还是很恶心. elg ...

  2. 在 android 上运行 python 的方法

    在android上运行python脚本,或者在android上使用python交互界面,对熟悉python的研究或开发人员来说,是一件很有吸引力的事情,因为python脚本真是非常高效,另外,有很多非 ...

  3. 警惕rapidxml的陷阱(二):在Android上默认内存池分配数组过大,容易导致栈溢出

    上一篇随笔中提到了,rapidxml在每个xml对象中维护了一个内存池,自己管理变量的生存周期.看起来很好,但我们在实际使用中还是出现了问题. 项目中我们的模块很快写好了,在windows和linux ...

  4. 通杀所有系统的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻击

    通杀所有系统的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻击 大家肯定知道前几天刚爆出来一个linux内核(Android也用的linux内核)的dirtycow漏洞.此洞可 ...

  5. 在Android上使用qemu-user运行可执行文件

    在Android上使用qemu-user运行可执行文件 作者:寻禹@阿里聚安全 前言 QEMU简要介绍: QEMU可以解释执行可执行程序.既然QEMU可以解释执行可执行程序,那么QEMU就能够知道执行 ...

  6. 编译可在Android上运行的qemu user mode

    前言 本文在Ubuntu 64位系统上对qemu项目进行交叉编译,并且只编译与qemu user mode有关的代码. 下文中的”NDK”若无特殊说明均指”Android NDK”. 下文中”$NDK ...

  7. 系列篇|编译可在Android上运行的依赖库(一):glib库

    前言 这是系列文章,它们由<编译可在Android上运行的glib库>及其他4篇文章组成,这4篇文章在“编译依赖库”一节中列出.由于glib库依赖于其他第三方库,所以需要先将依赖的第三方库 ...

  8. EasyTouch绑定事件在电脑上点击有效Android上无效的解决方法

    最近做一个RPG类的游戏发现使用EasyTouch虚拟摇杆插件在电脑上点击有效Android上无效,查找资料发现是Easy Joystick中的一个属性interaction type要设置成 Dir ...

  9. TensorFlow 在android上的Demo(1)

    转载时请注明出处: 修雨轩陈 系统环境说明: ------------------------------------ 操作系统 : ubunt 14.03 _ x86_64 操作系统 内存: 8GB ...

随机推荐

  1. 各种数据库连接代码(java)

    SqlServer2000 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); URL = "j ...

  2. Meisell-Lehmer算法(统计较大数据里的素数)

    http://acm.hdu.edu.cn/showproblem.php?pid=5901 1e11的数据量,这道题用这个算法花了202ms. #include<bits/stdc++.h&g ...

  3. HDU 5768:Lucky7(中国剩余定理 + 容斥原理)

    http://acm.hdu.edu.cn/showproblem.php?pid=5768 Lucky7 Problem Description   When ?? was born, seven ...

  4. Discuz2 x3深入研究内容资料

    http://blog.csdn.net/yanhui_wei/article/category/1136193

  5. php socket通信(tcp/udp)

    注意 1.在socket_bind的时候ip地址不能真回环地址如127.0.0.1 2.server.php后台跑起来的时候 nohup php server.php > /var/tmp/a. ...

  6. 仿iOS底部弹出popUpWindow

    上面为弹出来的效果 popUpWindow布局: <?xml version="1.0" encoding="utf-8"?> <Linear ...

  7. Linux软件的安装与卸载

    configure作用:是源码安装软件时配置环境用的 他根据你的配置选项和你的系统情况生成makefile文件 为make 做准备 最常用的参数: ./configure --prefix 作用: 不 ...

  8. 选择轮廓(select_shape)

    选择轮廓(select_shape)     Halcon是一款运用广泛的图像识别和处理软件.在肤浅的接触中,它的轮廓选择算子(select_shape)给予我很深的印象.结果是往往几行代码就能够产生 ...

  9. ContentProvider官方教程(8)自定义MIME

    MIME Type Reference Content providers can return standard MIME media types, or custom MIME type stri ...

  10. C语言第5天

    [1]数组 多个数据类型相同元素的集合: [2]访问元素 从下标0开始,到N-1结束 [3]定义数组 <存储类型> <数据类型 > <数组名>[<表达式> ...