我有点糊涂了。Pugi::xml_node::value()返回chart_t类型的字符串,根据编译标志可以是wchar_t或char。在pugiXML的文档中说它可以处理utf族编码的不同类型。好的。我正在使用pugi::xml_document::load_file()加载uft16编码的文档。然后,当我迭代抛出节点并在每个节点上调用value()方法时,在哪种编码中我将获得值?大概是在编码我的数据,我已经加载到xml_document。这意味着在utf16。如果它是utf16,那么我就不能处理这个值,因为会有0符号,我就不能使用strlen, strcpy等等…我做了这样的测试,但一切都很好。有人知道它是怎么工作的吗?
有两种编译模式-默认模式,文档使用UTF8在char数组中存储内存中的数据,以及wchar模式(PUGIXML_WCHAR_MODE),其中数据使用UTF16或UTF32存储在wchar_t数组中,具体取决于sizeof(wchar_t)。
当你加载或保存文档时,pugixml会自动对输入数据进行解码,或者以load/save函数的encoding参数指定的编码方式对输出数据进行编码。
在您的示例中,pugixml自动检测输入文件包含UTF16数据并将其解码为UTF8,这就是您从value()中获得的结果。
http://pugixml.googlecode.com/svn/tags/latest/docs/manual/loading.html
http://pugixml.googlecode.com/svn/tags/latest/docs/manual/loading.html manual.loading.encoding
您可以自己指定编码或"享受"自动检测的编码