Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中一个很好的std::string跨平台UTF8替代方案+;11?_C++_String_Wstring - Fatal编程技术网

C++ C+中一个很好的std::string跨平台UTF8替代方案+;11?

C++ C+中一个很好的std::string跨平台UTF8替代方案+;11?,c++,string,wstring,C++,String,Wstring,我试图在游戏中找到一个好的替代std::stringwstring在Android中无法正常工作。到目前为止,我只使用ushort[]和0-65535范围(每个字符2个字节),它似乎适合11种语言作为位图字体,但向前看,我希望得到更好的实现 u8“xxxyyy”VC++编译器还不支持文字符号,我还有什么其他选择?阻力最小的方法可能是继续,将UTF-8放入std::string对象中。对于任何不在ASCII范围内的内容,您都必须使用手动编码的反斜杠转义来编写UTF-8文本,并且您将无法使用loca

我试图在游戏中找到一个好的替代
std::string
<代码>wstring在Android中无法正常工作。到目前为止,我只使用
ushort[]
0-65535
范围(每个字符2个字节),它似乎适合11种语言作为位图字体,但向前看,我希望得到更好的实现


u8“xxxyyy”
VC++编译器还不支持文字符号,我还有什么其他选择?

阻力最小的方法可能是继续,将UTF-8放入
std::string
对象中。对于任何不在ASCII范围内的内容,您都必须使用手动编码的反斜杠转义来编写UTF-8文本,并且您将无法使用
locale
,但根据我的经验,
locale
无论如何都是无用的。我个人无法保证它的有用性,而且它非常庞大,但您可能会发现这些库都有适合此策略的例程。

阻力最小的方法可能是直接将UTF-8放入
std::string
对象中。对于任何不在ASCII范围内的内容,您必须使用手动编码的反斜杠转义来写入UTF-8文本,并且您将无法使用
语言环境
,但根据我的经验,
locale
无论如何都是无用的。我正在尝试获得一个正确的UTF8实现,以便其他人更容易修改要导入的文件。也许你应该列出一些东西,让你寻找UTF-8
std::strings
s的替代品。如果只是VS中不支持
u8
,那么您只需要解决该问题。为什么不将文本保留为std:string或char[]?将字符串的内容放在代码中的任何位置都是一条通向任何地方的明确道路。让您的内容/资产/资源系统以二进制/UTF8格式交付它们。每次你在你的代码中发现一个xxx=“游戏结束”时,某个游戏编码员就会死。@Zack如果你回答这个问题而不是评论,我会投它一票。这是正确的方法。ICU不仅有帮助,还提供了一个专用类型
ICU::UnicodeString
,它可以完成Unicode感知字符串类的所有功能。然而,内存中的存储是UTF-16,而不是UTF-8,所以要小心内存消耗。