C++ XMLString::transcode的用途

C++ XMLString::transcode的用途,c++,string,xml-parsing,char,xerces-c,C++,String,Xml Parsing,Char,Xerces C,我似乎不理解XMLString::transcode(XMLCh*)和XMLString::transcode(char*)的目的,因为我显然不理解XMLCh*和char*之间的区别。 有人能帮我说清楚吗?Xerces内部将信息编码为UTF-16。UTF-16数据使用XMLCh数据类型存储 “C-style”字符串使用本地代码页中的char(可能是UTF-8,但取决于平台和设置),您可以使用转码在两者之间进行转换 例如,如果您想从Xerces向另一个库提供一些数据,而该库需要本地代码页中的文本,

我似乎不理解
XMLString::transcode(XMLCh*)
XMLString::transcode(char*)
的目的,因为我显然不理解
XMLCh*
char*
之间的区别。
有人能帮我说清楚吗?

Xerces内部将信息编码为UTF-16。UTF-16数据使用
XMLCh
数据类型存储

“C-style”字符串使用本地代码页中的
char
(可能是UTF-8,但取决于平台和设置),您可以使用
转码
在两者之间进行转换

例如,如果您想从Xerces向另一个库提供一些数据,而该库需要本地代码页中的文本,则需要对其进行
transcode
。另外,如果您有
char
数据并希望将其提供给Xerces,则需要
transcode
将其转换为
XMLCh
,因为Xerces知道这一点

例如:

// to local code page
DOMNode *node = ...;
char* temp = XMLString::transcode(node->getNodeValue()); 
std::string value(temp);
XMLString::release(&temp); 

// from local code page
DOMElement *element = ...;
XMLCh *tag = XMLString::transcode("test");
DOMNodeList *list = element->getElementsByTagName(tag);
XMLString::release(&tag);
别忘了松开绳子!更好的方法是编写一些包装器,但internet上有可用的包装器(只需搜索名为
XercessString
)的类即可


如果你想更多地了解编码,我想你应该阅读

添加几行代码作为例子,这对像我这样的读者会有很大帮助!