c++;:如何从UTF-8代码点创建无符号字符 我正在使用C++库,需要从UTF-8代码点创建一个无符号字符。例如,如果代码点是(一个‘拉丁字母小资本G’),我将如何在C++中创建这个?

c++;:如何从UTF-8代码点创建无符号字符 我正在使用C++库,需要从UTF-8代码点创建一个无符号字符。例如,如果代码点是(一个‘拉丁字母小资本G’),我将如何在C++中创建这个?,c++,utf-8,char,unsigned,C++,Utf 8,Char,Unsigned,如果使用javascript,我可以执行以下操作: var-temp=String.fromCharCode(610); 控制台日志(临时);//输出一个小“G”(正确) var代码点=温度charCodeAt(0); console.log(代码点);//输出610(正确) C++中的P>已经尝试过: unsigned char temp=(unsigned char)610; //编译,但是 调试::WriteLine((int)temp);//输出98(?) 提供C++中的代码示例,它

如果使用javascript,我可以执行以下操作:

var-temp=String.fromCharCode(610);
控制台日志(临时);//输出一个小“G”(正确)
var代码点=温度charCodeAt(0);
console.log(代码点);//输出610(正确)
C++中的P>已经尝试过:

unsigned char temp=(unsigned char)610;
//编译,但是
调试::WriteLine((int)temp);//输出98(?)

提供C++中的代码示例,它与上面的JavaScript示例相同。


环境是托管C++,但我想避免CLR类型在我与第三方库接口时使用。

A<代码>未签名char <代码>是小的,保持610的值(假设字符是8位宽,它只能保存值从0到255),所以它将*

使用
char16\u t
存储16位字符(或
char32\u t
存储32位字符,UTF-8需要)

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

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

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

610-256-256=98


Unicode代码点可能需要32位表示。在大多数西方语言中,16位就足够了,但要处理所有可能的Unicode代码点,确实需要32位

uint32_t codePoint = someString.CodePointAt(x);

您可以在此处阅读更多信息:。

如果您想创建指向Unicode代码点610的UTF-8表示形式的无符号字符,可以执行以下操作:

char unsigned temp[] = { 0xc9, 0xa2 };

调试的类型是什么?
Debug
是否识别UTF?因为C++的流没有。您需要一个库来处理UTF,尤其是UTF8。
unsigned char
只能保证最多保存255个值;Unicode代码点可以大得多。您的问题没有很好地说明。啊,如果有可能做到这一点,生活会轻松得多……没有UTF-8代码点,您是指UTF-8代码单元还是Unicode代码点?Debug::WriteLine看起来像.NET…似乎是C++/CLI!?请注意,
char16\u t
char32\u t
在这里被用作码点。@MooingDuck,您忘了提到
char16\u t
不够大,无法容纳每个码点,因此应避免使用。根据Windows的要求,可以使用字符串
char16\u t
来保存UTF-16。Unicode最多使用21位。没有可以表示17-31位数据的数字数据类型,因此您需要32位数字类型来表示21位数据。
char unsigned temp[] = { 0xc9, 0xa2 };