我正在使用TinyXML来解析/构建 XML 文件。现在,根据文档,该库通过 UTF-8 支持多字节字符集。到目前为止,我认为很好。但是,该库提供的唯一 API(用于获取/设置元素名称、属性名称和值,......使用字符串的所有内容)是通过std::string
or const char*
。这让我怀疑自己对多字节字符集支持的理解。仅支持 8 位字符的字符串如何包含 16 位字符(除非它使用代码页,否则会否定“支持 Unicode”声明)?我了解您理论上可以采用 16 位代码点并将其拆分为 a 中的 2 个字符std::string
,但这不会改变std::string
对于“Unicode”字符串,它会使其在大多数用途中无效,并且在写入文件并被另一个程序读入时可能会意外工作。
那么,有人可以向我解释一个库如何提供“8 位接口”(std::string
或const char*
)并且仍然支持“Unicode”字符串吗?
(我可能在这里混淆了一些 Unicode 术语;对于由此产生的任何混淆,我深表歉意)。