c++ - Boost.Locale - C++ 中的 Unicode 字符串

标签 c++ string boost boost-locale

我可以让我的应用程序中的所有 std::string 都支持带有 Boost.Locale 的 Unicode 吗?阅读文档后,我可以说是的。但我不明白它是如何工作的。主要问题是我还能使用 boost 字符串算法库或 Boost.Lexical_Cast 库吗?如果是,为什么我需要 boost::locale::to_upper和类似的格式化方法,如果我在 boost 字符串算法库中有这些方法的话。

最佳答案

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

为了让它工作,您将区域设置注入(inject)字符串,或者将默认的全局区域设置设置为新的基于 unicode 的区域设置(由 Boost.Locale 生成)。 请参阅此处了解如何执行此操作:http://www.boost.org/libs/locale/doc/html/locale_gen.htmlhttp://www.boost.org/libs/locale/doc/html/faq.html

Boost.Locale 中的字符串操作 API 与 Boost 字符串算法库中提供的 API 不同。 在这里查看为什么 Boost.Locale 函数更好:http://www.boost.org/libs/locale/doc/html/conversions.html

您仍然可以使用 boost::lexical_cast,前提是您正确设置了全局语言环境(因为,如果我没记错的话,您不能显式地将语言环境对象传递给 Boost.LexicalCast)。

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

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

关于c++ - Boost.Locale - C++ 中的 Unicode 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9159451/

相关文章:

c++ - 在 QMainWindow 中创建 Widget 并加载到 ScrollArea

Python删除美元金额中的逗号

c++ - boost::property_tree 编译错误(错误 C2061:语法错误:标识符 'p')

c++ - 如何从一条路径中减去另一条路径?

c++ 和 boost program_options 错误 : 'desc' does not name a type

c++ - 观察 QSharedMemory 的变化

c++ - 有没有办法防止自动变量被删除?

c++ - 数组初始化 [c/c++]

c - 用C获取文件的扩展名

java - 如何在 JSP 中突出显示字符串中的特定单词