gpt4 book ai didi

unicode - D 中原始字符类型有哪些限制?

转载 作者:行者123 更新时间:2023-12-02 08:12:00 25 4
gpt4 key购买 nike

我目前正在探索 Digital Mars D 的规范语言,并且在理解原始字符类型的完整性质时遇到了一些困难。本书Learn to Tango With D对于该语言在该领域的功能和限制也同样含糊不清。

类型在 the website 上给出如:

char;    // unsinged 8 bit UTF-8wchar;   // unsigned 16 bit UTF-16dchar;   // unsigned 32 bit UTF-32

由于我们知道大多数 Unicode 转换 (UTF) 格式编码表示具有可变位宽的字符,这是否意味着 D 中的 char 只能包含适合 8 位的值,或者它是否会扩展当你给它双字节字符时,在机器的物理内存中?也许还有其他可能性,例如当您重载变量时自动转换为下一个最合适的类型?

举例来说,我想在编辑器中使用 UTF-8 字符并输入中文。它会简单地摔倒,还是能够像 C# 一样更“正确”地处理 Unicode 字符?是否仍然需要提供粘合代码以允许使用 Unicode 支持的任何语言?

如果您能提供有关这些类型如何在幕后工作的任何具体信息,以及有关处理其局限性的任何一般最佳实践建议,我将不胜感激。

最佳答案

单个 charwchar 代表 UTF code unit 。这意味着,char 本身可以表示 ASCII 符号 (0-127),也可以是表示 Unicode 字符 ( code point ) 的 UTF-8 序列的一部分。只有 dchar 类型可以表示整个 Unicode 字符,因为 Unicode 中有超过 65536 个代码点。

不会自动转换一种字符串类型(stringwstringdstring,它们只是字符类型的动态数组)将它们的内容转换为相应的 UTF 表示形式。为此,您必须使用 std.utf 中的函数 toUTF8toUTF16toUTF32 (或者如果您使用 Tango,则来自 tango.text.convert.UtftoString/toString16/toString32)。

用户已经实现了字符串类,它将自动使用最节省内存的表示形式,可以将每个字符映射到单个代码单元。这允许以最小的内存开销进行快速切片和索引。一种这样的实现是 mtext作者:克里斯托弗·E·米勒。

进一步阅读:

关于unicode - D 中原始字符类型有哪些限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1116480/

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