gpt4 book ai didi

c++ - 如何实现跨平台的C++亚洲字符?

转载 作者:行者123 更新时间:2023-11-30 01:53:53 25 4
gpt4 key购买 nike

我想用C++(我的系统是OSX)为日语实现一些字符串处理。这似乎比听起来要难得多。我读了很多书,但基本的东西还是有问题。

我希望我的代码也能在其他机器上编译和运行。根据我目前所读的内容,这似乎排除了 wchar_t 数据类型

  • 我应该用哪种数据类型来表示我的日文字符?
  • 如果我使用 char,我会得到一个错误,指出数据不适合 char-data type。那我应该使用什么其他数据类型呢?
  • 是否有任何可以接受的方法来使用standard c++ 处理wide-char 语言而没有陷阱,或者如果我坚持标准C++

最佳答案

为什么不用 wchar_twstring?是的,在某些平台上是 4 个字节,在其他平台上是 2 个字节;尽管如此,它仍然具有围绕它构建的一堆字符串处理 RTL 例程的优势。 Cocoa 的 NSString/CFString 是每个字符 2 个字节(就像 Windows 上的 wchar_t),但它非常不可移植。

您必须小心持久性和有线格式 - 确保它们不依赖于 wchar_t 的大小。

实际上,这取决于您的优化优先级。如果您有密集的处理(解析等),请使用 wchar_t。如果您希望与主机系统顺利交互,请选择符合主机操作系统假设的任何格式。

wchar_t 重新定义为两个字节也是一个选项。它是 GCC 的 -fshort-wchar。您将失去 wcs* RTL 的整个主体和 STL 的很大一部分,但在与主机系统交互时,代码页转换会更少。它碰巧在那里的两个大牌移动平台(一个以水果为主题,一个以机器人为主题)碰巧有两个字节字符串作为它们的 native 格式,但默认情况下是 4 字节 wchar_t。 -fshort-wchar 对两者都有效,我试过了。

以下是桌面和移动平台的便捷摘要:

  • Windows、Windows Phone、Windows RT、Windows CE:wchar_t 是 2 字节,操作系统使用 UTF-16
  • Vanilla 桌面 Linux:wchar_t 是 4 字节,操作系统使用 UTF-8,各种框架可能使用谁知道什么(Qt,特别是使用 UTF-16)
  • MacOS X、iOS:wchar_t 是 4 字节,操作系统使用 UTF-16,用户区带有一个替代的基于 2 字节的字符串 RTL
  • Android:wchar_t为4字节,OS使用UTF-8,但与Java交互层使用UTF-16
  • Samsung bada:wchar_t 是 2 字节,userland API 使用 UTF-16,无论如何 POSIX 层都严重瘫痪所以谁在乎

关于c++ - 如何实现跨平台的C++亚洲字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22671122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com