我想在Windows平台上从XML文件中读取和编写阿拉伯字符。我的c ++程序使用Xerces来处理XML文件。正如Xerces文档所述,它支持Unicode字符。 我用
xercesc::XMLString::transcode()
像
xercesc::XMLString::transcode("محمد")
方法但它返回????字符。怎么了? (在Xerces文档中提示XMLCh是wchar_t)
答案 0 :(得分:0)
答案很简单。我在搜索后得到了它。 XMLCh是wchat_t的typedef所以对于某些方法,例如xercesDomParser->解析器,它将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());