我需要将字符串“Test€”转换为“Test€”反之亦然。请注意它是一个字符串而不是xml。为了您的信息,我正在使用C ++开发应用程序,并使用Xerces进行XML解析。请帮助我在c ++应用程序中如何实现它。
谢谢, 拉姆
答案 0 :(得分:0)
我认为这个答案可能与平台有关,但我不确定。
您可以使用字符串流和强制转换。如果lookup
是一个包含字符代码十进制版本的字符串,则此函数将返回字符版本:
char fixchar(string lookup){
stringstream converter (lookup);
int i;
converter >> dec >> i;
return (char)i
(请注意,对于以#x
而非#
为前缀的十六进制字符串,您只能使用hex
代替dec
。)
您可以使用原始字符串上的lookup
函数获取find
字符串。这是一个循环,它使用上面的函数将带有fixd
子串的字符串(称为&#x[number]
)转换为没有字符代码的普通字符串:
while (fixd.find("&#x")!=string::npos){
tag = int(fixd.find("&#"));
endtag = int(fixd.find(";"));
fixd = fixd.substr(0,tag) + fixchar(fixd.substr(tag+3,endtag-tag-3)) + fixd.substr(endtag+1, fixd.length()-tag-4);
}
类似地,你应该能够通过强制转换来获得角色的int版本,之后你可以随意使用它,包括将它以十进制形式添加到字符串中。