我想在 Windows 平台上从 XML 文件中读取和写入阿拉伯字符。我的 c++ 程序将 Xerces 用于 XML 文件。正如 Xerces 文档所指出的,它支持 Unicode 字符。我用
xercesc::XMLString::transcode()
喜欢
xercesc::XMLString::transcode("محمد")
方法,但它返回???? 特点。怎么了?(在 Xerces 文档中提示 XMLCh 是 wchar_t)
答案很简单。搜索后我得到了它。XMLCh 是 wchat_t 的 typedef,因此对于某些方法,例如 xercesDomParser->parser,它以 XMLCh* 作为参数,如果输入是 wstring 类型,则使用 c_str()。例如:
parser.parse(input.c_str());
如果输入是字符串类型,请使用 XMLString::transcode() 方法。例如:
parser.parse(XMLString::transcode(stringVariable));
另一面是wstring
作为 xerces 方法的输出。您应该简单地使用一个wstring
变量并对其进行初始化。例如xerces::XMLException::getMessage()
,将返回 XMLCh* 作为输出。你可以这样对待:
wstring test=wstring(xerces::XMLException::getMessage());
如果您想要字符串,您可以再次使用转码方法,例如
char* test=xerces::XMLString::transcode(xerces::XMLException::getMessage());