我真的无法在网上找到任何帮助!就像我在许多c++23程序中看到的那样,我想做的是:
for(char32_t c : utf8string | utf8to32())
这样我就可以处理每个单独的代码点。最好我想使用 boost::locale 因为我已经做了一个
boost::locale::normalize(in.begin(),in.end(),boost::locale::norm_nfc)
在构造函数中。在网上我看到提到了一些神秘的 boost/text/transcode_iterator.hpp ,它在我的系统上不存在。但即使这样也无法为上述 utf8to32 提供正确的类。关于我在哪里可以找到的任何提示?我该如何去写这样的课程呢?显然我需要在 std::string 的现有迭代器上绕另一个迭代器。然后我需要将新的迭代器放入容器中,以便在 for 循环中将其视为这样?如果我已经找到合适的迭代器实现,有什么例子可以做到这一点吗?
需要明确的是:我想读取 utf8 代码点,将它们与某些给定的代码点进行比较,并可能标记它们的位置以供将来使用。在7位ascii中很容易做到,我该如何在utf8中做到呢?好像还没有大量完全支持 21 位 utf8 的语法解析器...
boost/regex/pending/unicode_iterator.hpp
有 u8_to_u32_iterator
类,看起来特别接近。