gpt4 book ai didi

string - 从字符串打印字符给出不同的结果

转载 作者:行者123 更新时间:2023-12-01 12:40:22 26 4
gpt4 key购买 nike

我对 D 中的 UTF8 字符串感到困惑。有人可以解释为什么下面的代码会给出不同的结果吗?为什么 "abç"[2] == 'ç'false 而不是 true

string s = "abç";
for(int i = 0; i < s.length; i++)
{
dchar c = s[i];
writefln("%#x", cast(int)c);
}
writeln();
foreach(dchar c; s)
{
writefln("%#x", cast(int)c);
}

此代码输出:

enter image description here

最佳答案

ç 字符具有大于 7F 的 UNICODE 代码点(是 E7)因此在 UTF8 字符串中表示为多个 char(是对 C3 A7)

s[2] 只是 s 中的第 3 个 char(也是 'ç' 的第一个字符)

您的第一个循环按原样打印“字节”。 (作为 s[i])你的第二个循环将 s 中的代码点转换为 UTF32。

e7和C3 A7只是同一个(U+00E7)字符的UTF32和UTF8编码。

供引用:http://www.fileformat.info/info/unicode/char/e7/index.htm

关于string - 从字符串打印字符给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25465281/

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