我有一个游戏,它在数千个地方使用 std::wstring 作为其基本字符串类型,并使用 wchar_t 及其函数进行操作: wcsicmp() wcslen() vsprintf() 等。
问题是 R5c(撰写本文时的最新 ndk)不支持 wstring。
由于国际化,我无法更改代码以使用 std::string,并且我会破坏许多游戏使用的游戏引擎......
我有哪些选择?
1 - 用我自己的字符串类替换 string 和 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,我可以毫无例外地生活。
提前致谢!