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
)的类即可
如果你想更多地了解编码,我想你应该阅读添加几行代码作为例子,这对像我这样的读者会有很大帮助!