【发布时间】:2012-01-05 18:36:25
【问题描述】:
C++11 有两种新的字符整数数据类型,char16_t 和 char32_t。我想为没有不同类型的编译器模拟它们,以便重载 I/O 操作以将它们视为字符而不是整数值。
这些是要求:
- 不同(无
typedef)。 - 正常系统上的精确宽度(ala uint16_t 和 uint32_t)
- 允许其他 C++11 功能(见下文第一次尝试)
- 必须很好地处理文字;
char16_t c16 = u"blabla unicode text blabla";必须有效。 - 如果 char16_t 可以在数学运算符中使用,显然这也需要起作用。
我在文字部门失败的第一次尝试是强类型枚举:
enum char16_t : uint16_t;
这也有其他缺点,也许可以通过自己提供必要的运算符来解决(这对我来说真的很好)。
【问题讨论】:
-
完全不清楚你为什么要尝试这个或者你想使用什么工具。 “第一次尝试”使用 C++11。如果没有最新的 C++11 编译器,就无法从没有保证 Unicode 支持的编译器获取 Unicode 文字,也无法在编译时操作字符串。
标签: c++ types unicode c++11 character