我有点懵。 pugi::xml_node::value() 返回类型为 chart_t 的字符串,它可以是 wchar_t 或 char,具体取决于编译标志。在 pugiXML 的文档中说它适用于 utf 系列编码的不同类型。好的。我正在使用 pugi::xml_document::load_file() 加载 uft16 编码的文档。然后,当我迭代 throw 节点并在每个节点上调用 value() 方法时,我将在哪种编码中获得值(value)?大概是在对我的数据进行编码时,我已将其加载到 xml_document 中。这意味着在 utf16 中。如果它在 utf16 中,那么我将无法使用该值,因为会有 0 个符号,我将无法使用 strlen、strcpy 等等... 我做了这样的测试,但一切正常。有人知道它是如何工作的吗?
最佳答案
有两种编译模式——默认模式,文档使用 UTF8 将内存数据存储在 char 数组中,以及 wchar 模式 (PUGIXML_WCHAR_MODE),其中数据使用 UTF16 或 UTF32 存储在 wchar_t 数组中,取决于 sizeof(wchar_t)。
当您加载或保存文档时,pugixml 会自动解码输入数据或以加载/保存函数的“编码”参数指定的编码对输出数据进行编码。
在您的情况下,pugixml 会自动检测到输入文件包含 UTF16 数据并将其解码为 UTF8,这就是您从 value() 获得的结果。
关于c - PugiXML 值输出编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16773314/