我发现this在文本中计算单词的绝佳解决方案。我的问题是我可以正确理解这些"魔法"解决方案提供的STL。如果我理解正确的letter_only - 是一个创建语言环境对象的结构,只能找到字母并排除punctuaion。当main()调用imbue()时,letter_only' s构造函数调用get_table()...为我实现这个函数 - 深黑魔法。
我花了很多时间阅读cppreference,但无法完全理解这三个字符串。
我的目标是将此解决方案应用于unicode字符。
有人可以解释一下它的运作方式吗?谢谢。
答案 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
。