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

时间:2018-05-18 13:35:54

标签: c++ c++11

使用utfcpp lib,可以将'哈哈哈'中编码的字符串(utf8)拆分为多个uint32_t s(或符号(21704, 21704, 21704))例如char的{​​{1}} s。

在这种情况下,最好的解决方案是存储std::string('字符')序列(作为'字符串')?

例如,将uint32_t放入(21704, 21704, 21704)将需要迭代“字符串比较”的向量,这似乎是slower而不是vector<uint32_t>的真实版本。

提前致谢。

2 个答案:

答案 0 :(得分:1)

使用insert或您自己的brew std::basic_string<uint32_t>

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

答案 1 :(得分:1)

现代版的C ++附带char16_tchar32_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,stringu16stringu32stringwstring,   专业化basic_string<char>basic_string<char16_t>basic_string<char32_t>basic_string<wchar_t>

不幸的是,当涉及直接io时,basic_stream<char32_t>没有开箱即用的专业化,但UTF8语言环境应该有char32_tchar之间的转换器。