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

Fre*_*edL 5 c++ unsigned utf-8 char

我正在使用C++库,需要从UTF-8代码点创建一个unsigned char.例如,如果代码点是十进制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)
Run Code Online (Sandbox Code Playgroud)

在C++中尝试过:

unsigned char temp = (unsigned char)610;
// compiles, but
Debug::WriteLine((int)temp); // outputs 98 (??)
Run Code Online (Sandbox Code Playgroud)

请提供C++中的代码示例,其执行与上面的javascript示例相同.

环境是在托管C++中,但我想避免使用CLR类型,因为我正在与第三方库连接.

小智 5

一个unsigned char小是保持值为610(假设一个字符串是8位宽,它只能保存0到255之间的值),所以它将包围*

使用char16_t来存储一个16位的字符(或char32_t对于一个32位的字符,这UTF-8需要).

char32_t temp = (char32_t)610;
Debug::WriteLine(temp); // outputs 610 (!!)
Run Code Online (Sandbox Code Playgroud)

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

u8"I'm a UTF-8 string."
Run Code Online (Sandbox Code Playgroud)

*在你的例子中它甚至会回绕两次:

610 - 256 - 256 = 98