使用utfcpp
lib,可以将'哈哈哈'
中编码的字符串(utf8
)拆分为多个uint32_t
s(或符号(21704, 21704, 21704)
)例如char
的{{1}} s。
在这种情况下,最好的解决方案是存储std::string
('字符')序列(作为'字符串')?
例如,将uint32_t
放入(21704, 21704, 21704)
将需要迭代“字符串比较”的向量,这似乎是slower而不是vector<uint32_t>
的真实版本。
提前致谢。
答案 0 :(得分:1)
使用insert
或您自己的brew std::basic_string<uint32_t>
。
这将允许您使用它们的运算符和函数来操作这些对象。
答案 1 :(得分:1)
现代版的C ++附带char16_t
和char32_t
。它们应该优先于uintxx_t
类型,因为第24.2条字符特征[char.traits]强制要求char_traits
的特化定义:
本小节定义了表示字符特征的类的要求,并定义了一个类模板
char_traits<charT>
,以及四个专精,char_traits<char>
,char_traits<char16_t>
,char_traits<char32_t>
和char_traits<wchar_t>
满足这些要求。
这甚至允许立即访问basic_string
专门化:24.3字符串类[string.classes]说
标头
<string>
定义了用于操纵变长序列的basic_string类模板 类似char的对象和四个typedef-names,string
,u16string
,u32string
和wstring
, 专业化basic_string<char>
,basic_string<char16_t>
,basic_string<char32_t>
和basic_string<wchar_t>
。
不幸的是,当涉及直接io时,basic_stream<char32_t>
没有开箱即用的专业化,但UTF8语言环境应该有char32_t
和char
之间的转换器。