我正在考虑使用ICU或Boost Locale。
各自的优点和缺点是什么?
我知道两者都使用ICU,但是ICU被Boost Locale隐藏。根据{{3}}:“......整个ICU API隐藏在不透明指针之后,用户无法访问它。”
在比较这些库时,请考虑C ++ 11中的新Unicode功能。
答案 0 :(得分:16)
ICU是一个非常好的图书馆,但它有缺点:
请参阅:http://www.boost.org/doc/libs/1_49_0/libs/locale/doc/html/rationale.html#why_icu
Boost.Locale以C ++方式进行本地化,并允许使用除ICU之外的其他后端(当然ICU更好),因此在许多情况下Boost.Locale为您提供更好的本地化替代方案,因为它更简单,专为现代设计C ++,通常更容易使用。
当然,如果您需要Boost.Locale不支持的非常复杂的算法 或者你的应用程序所做的只是Unicode处理,然后ICU可能会更好,除了Boost.Locale更适合本地化C ++应用程序。
答案 1 :(得分:3)
Boost.Locale使用ICU作为其默认后端。 Boost.Locale也可以使用一些other backends。您可以将Boost.Locale视为更好的ICU接口。
答案 2 :(得分:1)
ICU由国际化专家设计,而boost则由C ++程序员设计。
虽然强大而优雅的C ++,但是很多国际化的错误。 现在,boost是一个很大的库集合,有些比其他的更好。 但ICU在整个过程中都是稳固的,除了微软之外,它几乎被所有人用作基础。
因此,如果您想要实现可靠的国际化,请选择ICU。 如果你想要尖端的C ++(但是我有点不稳定),那就去吧。