定义自己的unicode区域设置

时间:2017-05-31 05:34:18

标签: c++ unicode locale

我发现this在文本中计算单词的绝佳解决方案。我的问题是我可以正确理解这些"魔法"解决方案提供的STL。如果我理解正确的letter_only - 是一个创建语言环境对象的结构,只能找到字母并排除punctuaion。当main()调用imbue()时,letter_only' s构造函数调用get_table()...为我实现这个函数 - 深黑魔法。

我花了很多时间阅读cppreference,但无法完全理解这三个字符串。

我的目标是将此解决方案应用于unicode字符。

有人可以解释一下它的运作方式吗?谢谢。

1 个答案:

答案 0 :(得分:0)

语言环境不是简单的对象;它是由多个 facets 构建的。其中一个方面是ctype。 (字符类型)。您的关联解决方案会创建一个包含名为ctype<char>的自定义letter_only的区域设置。

letter_only的实现通过构建字符表来实现,因此您可以通过查找确定char c是否为字母。

这对您来说可能有所不同,因为wchar_t的表会更大。这就是为什么从ctype<wchar_t>继承时,您通常会覆盖virtual bool do_is(mask m, wchar_t c) const