Boost.Locae-C++中的Unicode字符串

Boost.Locale - Unicode string in C++

本文关键字:字符串 Unicode 中的 Locae-C++ Boost      更新时间:2023-10-16

我能用Boost.Locare让应用程序中的所有std::string都支持Unicode吗?看完文件后,我可以答应。但我不明白它是怎么运作的。主要的问题是我还能使用boost字符串算法库还是boost.Lexical_Cast库?如果是,为什么我需要boost::locale::to_upper和类似格式的方法,如果我在boost字符串算法库中有这些方法的话。

是的,您可以使用Boost.Locale.对应用程序中的所有字符串进行Unicode编码

为了使其发挥作用,您可以将区域设置插入字符串中,或者将默认的全局区域设置为新的基于unicode的区域设置(由Boost.Locare生成)。请参阅此处了解如何做到这一点:http://www.boost.org/libs/locale/doc/html/locale_gen.html和http://www.boost.org/libs/locale/doc/html/faq.html

Boost.Locare中的字符串操作API与Boost字符串算法库中提供的API不同。请参阅此处了解Boost.Locae函数更好的原因:http://www.boost.org/libs/locale/doc/html/conversions.html

您仍然可以使用boost::lexical_cast,前提是您正确地设置了全局区域设置(因为,如果我记得正确的话,您不能显式地将区域设置对象传递给boost.LlexicalCast)。

然而,请记住,这将"破坏"某些情况,例如,当将整数转换为字符串时,而不是使用C语言环境(可能是您以前的默认设置),它将使用不同的语言环境,这可能会插入分隔符等。当进行未向用户显示的转换时,您可能希望直接使用std::stringstream等来避免这些不需要的格式更改。

我强烈建议您完整阅读Boost.Locae文档,因为它应该解决您的大多数问题(尤其是常见问题解答、生成后端信息等)。