![]() |
1
26
UTF-16仍然是一种可变长度的字符编码(有超过2^16个unicode码点),因此不能执行O(1)个字符串索引操作。如果你做了很多类似的事情,你不会比UTF-8节省任何速度。另一方面,如果您的文本包含大量256-65535范围内的代码点,则UTF-16可以在大小上有很大的改进。UCS-2是UTF-16的一个变体,它 是 固定长度,以禁止任何大于2^16的码点为代价。 如果不了解您的需求,我个人会选择UTF-8。由于其他人已经列出的所有原因,这是最容易处理的。 |
![]() |
2
6
|
![]() |
3
5
如果您决定使用UTF-8编码,请查看此库: http://utfcpp.sourceforge.net/
|
![]() |
4
4
请注意,std::wstring是Mac上的本机Unicode(U+10000以上的字符不需要UTF-16),因此它使用4字节/wchar\t。这样做的最大优点是,i++始终为您提供下一个字符。在Win32上,只有99.9%的情况下是这样。作为一名程序员,你会明白99.9%是多么的少。
磁盘格式是另一回事。对于可移植性,应该是UTF-8。UTF-8中没有端部问题,也没有讨论宽度(2/4)。这可能是许多程序似乎使用UTF-8的原因。
|
![]() |
5
2
我推荐UTF-16用于任何类型的数据操作和UI。 Mac OS X和Win32 API使用UTF-16,wxWidgets、Qt、ICU、Xerces和其他应用程序也使用UTF-16。 UTF-8可能更适合于数据交换和存储。 看见 http://unicode.org/notes/tn12/ .
|
![]() |
6
2
MicroATX几乎是一种标准PC主板格式,最多支持4-8GB的RAM。如果你说的是PicoAX,可能你的内存限制在1-2GB。即便如此,对于开发环境来说,这已经足够了。出于上述原因,我仍然坚持使用UTF-8,但内存不应该是您关心的问题。 |
![]() |
8
0
您考虑过使用wxstring吗?如果我没记错的话,他们可以做utf-8<-&燃气轮机;Unicode转换,当您必须向UI传递字符串和从UI传递字符串时,这将使它变得更容易。 |
![]() |
Bas Smit · 如何从输出流创建std::string? 7 年前 |