在 C++ 中标记 latin-1 文本
Posted
技术标签:
【中文标题】在 C++ 中标记 latin-1 文本【英文标题】:Tokenize latin-1 text in c++ 【发布时间】:2015-03-24 12:48:04 【问题描述】:我有一个带有拉丁文本的 mysql 表。我正在尝试将此文本标记为单词。
我遇到了 boost 和 ICU 标记器。问题是这些库希望我弄清楚边界这个词。
我尝试遵循 boost 代码(使用默认标记器,即空格和标点符号)。
int main()
using namespace std;
using namespace boost;
string s = "Tänk efter nu – förr'n vi föser dig bort";
tokenizer<> tok(s);
for(tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg)
cout << *beg << "\n";
return 0;
它确实给了我单词列表。但在这里我假设空格是正确的单词分隔符。
考虑到这些 (http://en.wikipedia.org/wiki/ISO/IEC_8859-1#Languages_with_complete_coverage) 语言的集合,使用上述代码是否安全?
或者你有没有其他解决方案?
【问题讨论】:
boost.locale: boundary analysis 【参考方案1】:ICU 支持考虑文本语言特性的边界分析:
http://userguide.icu-project.org/boundaryanalysis
【讨论】:
以上是关于在 C++ 中标记 latin-1 文本的主要内容,如果未能解决你的问题,请参考以下文章