Android NDK中缺少std :: wstring支持的解决方案?

use*_*569 5 wchar-t stlport wstring android-ndk

我有一个游戏,它使用std :: wstring作为其基本字符串类型在数千个地方以及使用wchar_t及其函数进行操作:wcsicmp()wcslen()vsprintf()等.

问题是R5c不支持wstring(此写入时最新的ndk).

我无法改变代码使用std :: string因为国际化而且我会破坏许多游戏使用的游戏引擎......

我有哪些选择?

1 - 用我自己的字符串类替换字符串和wstring

这将使我更好的平台独立性,但它是荒谬重新实现车轮.我已经开始使用字符串的COW实现了.我需要它是COW,因为我将它们用作hash_maps中的键.这当然是很多工作和容易出错......但似乎这是我能做的事情.

2 - 尝试使用我自己的C标准库(wcslen,mbstowcs ...)的宽字符串函数实现来修复NDK重新编译STLPort

这将是更好的方式......但我不知道该怎么做:(

如何在libstdc ++.a或libstlport_static.a中替换函数(比如说wcslen)?(不确定它们在哪里:()

而且我不确定我需要重新实现哪些功能,我知道wcslen没有工作所以我猜他们应该全部......

3 - 你还有其他想法吗?

我不能等待正式的修复,如果我不知道如何做#2,我将不得不选择#1选项.

我已经读到某个地方,如果你的目标是2.3你可以使用wstrings,但我应该定位Android 2.1.

PS:忘了说我当然需要使用STL,但没有RTTI,我可以无异常地生活.

提前致谢!

Mar*_*ram 0

我遇到了和你一样的问题,但我唯一的想法是通过 JNI 加载字符串(就像jstring*在祖国一样),然后根据需要将它们转换为 UTF 字符。在这里查看可用的 JNI 字符串函数:
http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html#string_operations