C++ 如何将utfcpp中的多个utf8符号(UINT32ts)存储为字符串?

C++ 如何将utfcpp中的多个utf8符号(UINT32ts)存储为字符串?,c++,c++11,C++,C++11,使用utfcpplib,可以拆分字符串('哈哈哈')在utf8中编码为多个uint32 ts(或符号(217042170421704)),其作用类似于std::string的chars 在这种情况下,存储uint32\t(“字符”)序列(作为“字符串”)的最佳解决方案是什么 例如,将(217042170421704)放入向量将需要迭代向量进行“字符串比较”,这似乎比真正版本的std::string更有效 提前感谢。使用std::wstring或您自己的brew 这将允许您使用它们的运算符和函数来

使用
utfcpp
lib,可以拆分字符串(
'哈哈哈'
)在
utf8
中编码为多个
uint32 t
s(或符号
(217042170421704)
),其作用类似于
std::string的
char
s

在这种情况下,存储
uint32\t
(“字符”)序列(作为“字符串”)的最佳解决方案是什么

例如,将
(217042170421704)
放入
向量
将需要迭代向量进行“字符串比较”,这似乎比真正版本的
std::string
更有效


提前感谢。

使用
std::wstring
或您自己的brew


这将允许您使用它们的运算符和函数来操作此类对象。

可以使用
std::wstring
或您自己的brew


这将允许您使用它们的运算符和函数来处理这些对象。

< P> C++的现代版本附带“代码> CHAR16.T < /COD>和<代码> CHAR32×T。应优先选择
uintxx\u t
类型,因为第24.2条字符特征[char.traits]规定了字符特征的专门化定义

本子条款定义了代表角色特征的类的需求,并定义了类模板
char\u traits
,以及四个专门化,
char\u traits
char\u traits
char\u traits
,以及满足这些要求的
char\u traits

这甚至允许直接访问
basic_字符串
specialization:24.3字符串类[string.classes]说

标题
定义了用于操作不同长度序列的基本字符串类模板 类字符对象和四个typedef名称,
string
u16string
u32string
,它们分别命名 分别是
基本字符串
基本字符串
基本字符串
、和
基本字符串


遗憾的是,在直接IO中,对于<代码> Basic Survivs/CODE >,没有任何专门的存在,但是UTF8的地方应该有在<代码> CHAR32→T< <代码>和<代码> char < /代码>之间的转换。

< P>现代版本的C++与“代码> CAR16SUT 和CAR32×T应优先选择
uintxx\u t
类型,因为第24.2条字符特征[char.traits]规定了字符特征的专门化定义:

本子条款定义了代表角色特征的类的需求,并定义了类模板
char\u traits
,以及四个专门化,
char\u traits
char\u traits
char\u traits
,以及满足这些要求的
char\u traits

这甚至允许直接访问
basic_字符串
specialization:24.3字符串类[string.classes]说

标题
定义了用于操作不同长度序列的基本字符串类模板 类字符对象和四个typedef名称,
string
u16string
u32string
,它们分别命名 分别是
基本字符串
基本字符串
基本字符串
、和
基本字符串


不幸的是,当谈到直接io时,
basic\u stream
没有现成的专门化,但是UTF8语言环境应该在
char32\u t
char
之间有转换器,谢谢您的快速回复。我认为在
std::basic_string
中应该只使用
char
wchar\u t
。我尝试使用
std::basic_ostream操作系统输出
std::basic_string
string,但编译器告诉我它是受保护的构造函数。如何输出此
std::basic_string
string?@Edityouprofile您的问题是存储此类字符串,而不是输出它们。对于输出,您需要将其转换回您知道如何输出的内容——如果您坚持使用
vector
,则需要以相同的方式执行转换。关于这个答案:我不建议使用
std::wstring
wchar\u t
可能太小,无法容纳所有Unicode代码点。@Edityouprofile hvd关于
wchar\u t
的说法是正确的。在使用它之前,请检查它是否适合您。@hvd上次我检查
wchar\t
文档时,它有点像“足够大,可以容纳任何支持的字符代码点”,然后是32位与64位系统的比较。。。IIRC。什么意思?谢谢你的快速回复。我认为在
std::basic_string
中应该只使用
char
wchar\u t
。我尝试使用
std::basic_ostream操作系统输出
std::basic_string
string,但编译器告诉我它是受保护的构造函数。如何输出此
std::basic_string
string?@Edityouprofile您的问题是存储此类字符串,而不是输出它们。对于输出,您需要将其转换回您知道如何输出的内容——如果您坚持使用
vector
,则需要以相同的方式执行转换。关于这个答案:我不建议使用
std::wstring
wchar\u t
可能太小,无法容纳所有Unicode代码点。@Edityouprofile hvd关于
wchar\u t
的说法是正确的。在使用它之前,请检查它是否适合您。@hvd上次我检查
wchar\t
文档时,它有点像“足够大,可以容纳任何支持的字符代码点”,然后是32位与64位系统的比较。。。IIRC。支持是什么意思?