我正在编写代码,在数据库中创建索引。使用ICU库我的工作流程是:
ucol_getSortKey
以获取构建索引的排序键。现在我切换到Boost Locale。 Can Boost Locale可以像ICU一样构建排序键吗?或者我应该直接以某种方式致电ICU?
答案 0 :(得分:1)
看起来这就是Boost Locale所知的collate_impl::do_[basic_]transform()
:
std::vector<uint8_t> do_basic_transform(level_type level,CharType const *b,CharType const *e) const
{
icu::UnicodeString str=cvt_.icu(b,e);
std::vector<uint8_t> tmp;
tmp.resize(str.length());
icu::Collator *collate = get_collator(level);
int len = collate->getSortKey(str,&tmp[0],tmp.size());
if(len > int(tmp.size())) {
tmp.resize(len);
collate->getSortKey(str,&tmp[0],tmp.size());
}
else
tmp.resize(len);
return tmp;
}
std::basic_string<CharType> do_transform(level_type level,CharType const *b,CharType const *e) const
{
std::vector<uint8_t> tmp = do_basic_transform(level,b,e);
return std::basic_string<CharType>(tmp.begin(),tmp.end());
}
为了表现,您似乎想要致电do_basic_compare