使用utfcpp库,可以将utf8中编码的字符串('哈哈哈')拆分成几个符号(或符号(21704, 21704, 21704)),这些符号的行为类似于std::string的char。
在这种情况下,存储字符(‘uint32_t’)序列(作为‘字符串’)的最佳解决方案是什么?
例如,将(21704, 21704, 21704)放入vector<uint32_t>需要迭代“字符串比较”的向量,这比真正的std::string版本更像是slower。
提前谢谢。
发布于 2018-05-18 21:39:16
使用std::wstring或您自己的brew std::basic_string。
这将允许您使用它们的运算符和函数来操作此类对象。
发布于 2018-05-18 22:01:32
现代版本的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专门化: string.classes说: 24.3个字符串类
头<string>定义了basic_string类模板,用于操作类字符对象的可变长度序列和四个类型定义名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之间的转换器。
https://stackoverflow.com/questions/50412549
复制相似问题