【发布时间】:2011-04-08 18:14:57
【问题描述】:
我目前正在开发一个跨平台的 C++ 库,我打算了解 Unicode。我目前通过 typedef 和宏对 std::string 或 std::wstring 提供编译时支持。这种方法的缺点是它迫使您使用像L("string") 这样的宏,并大量使用基于字符类型的模板。
支持和反对仅支持 std::wstring 的论据是什么?
使用 std::wstring 会完全阻碍 GNU/Linux 用户群,而 UTF-8 编码是首选?
【问题讨论】:
-
我非常喜欢 Python 3 的方法 - 新的
str类是 unicode,并且有一个新的bytes类来保存字节序列,并提供类似字符串的操作(子字符串搜索等) )。但它们只能通过编码转换来解释为文本。因此,如果有人计划“只包含 7 位值的数据”,他们可以通过使用“字节”来节省内存,但他们的对象与正确的字符串不兼容。我在 C++ 中看到的这个尴尬问题与 wstring 已经存在的问题相同,你必须转换文字,以及调用像fopen这样的函数。
标签: c++ unicode cross-platform wstring