gpt4 book ai didi

c++:如何从UTF-8代码点创建unsigned char

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:47 26 4
gpt4 key购买 nike

我正在使用 C++ 库,需要从 UTF-8 代码点创建一个无符号字符。例如,如果代码点是 decimal 610 (“拉丁字母小写字母 G”),我将如何在 C++ 中创建它?

我是javascript,我可以做到以下几点:

var temp = String.fromCharCode(610);
console.log(temp); // Outputs a small 'G' (correct)
var codePoint = temp.charCodeAt(0);
console.log(codePoint); // Outputs 610 (correct)

在C++中已经尝试过:

unsigned char temp = (unsigned char)610;
// compiles, but
Debug::WriteLine((int)temp); // outputs 98 (??)

请提供与上述 javascript 示例执行相同的 C++ 代码示例。

环境在托管 C++ 中,但我想避免使用 CLR 类型,因为我正在与第 3 方库交互。

最佳答案

unsigned char 太小,无法容纳 610 的值(假设 char 为 8 位宽,它只能容纳 0 到 255 之间的值),所以它会是 wrap around *

使用 char16_t 存储 16 位字符(或使用 char32_t 存储 32 位字符,这是 UTF-8 要求的)。

char32_t temp = (char32_t)610;
Debug::WriteLine(temp); // outputs 610 (!!)

如果您想处理 UTF-8 字符串,请使用 UTF-8 字符串文字:

u8"I'm a UTF-8 string."

*在您的示例中它甚至会环绕两次:

610 - 256 - 256 = 98

关于c++:如何从UTF-8代码点创建unsigned char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8580400/

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