【发布时间】:2009-01-11 20:26:36
【问题描述】:
在 C++ 中处理字符串的最佳实践是什么?我特别想知道如何处理以下情况:
文本和 XML 文件的文件输入/输出,可以用不同的编码编写。处理此问题的推荐方法是什么,以及如何检索这些值?我想,一个 XML 节点可能包含 UTF-16 文本,然后我必须以某种方式处理它。
如何处理
char*字符串。毕竟,这可以是无符号的,我想知道我如何确定他们使用什么编码(ANSI?),以及如何转换为 UTF-8?是否有任何推荐阅读,其中记录了 C/C++ 关于字符串的基本保证?UTF-8 等字符串的字符串算法——计算长度、解析等。如何做到最好?
真正可移植的字符类型是什么?我了解到
wchar_t可以是 8-32 位宽,如果我想跨平台保持一致(特别是在不同平台之间移动数据时 - 这似乎是一个问题,如前所述例如EASTL, look at item #13)
目前,我在任何地方都在使用std::string,在调用 Unicode-API 时,我使用了一个小的帮助实用程序来转换为 UTF-16,但我很确定这并不是最好的方法。使用 Qt 的 QString 或 ICU String 类似乎是正确的,但我想知道是否有更轻量级的方法(即如果我的 char 字符串是 ANSI 编码的,并且使用的 ANSI 子集等于UFT-8,然后我可以轻松地将数据视为 UTF-8 并提供从/到 UTF-8 的转换器,我已经完成了,因为我可以将它存储在 std::string 中,除非这种方法存在问题)。
【问题讨论】: