字符串在C ++中编码

时间:2013-03-07 06:48:17

标签: c++ encoding

我需要将字符串“Test€”转换为“Test€”反之亦然。请注意它是一个字符串而不是xml。为了您的信息,我正在使用C ++开发应用程序,并使用Xerces进行XML解析。请帮助我在c ++应用程序中如何实现它。

谢谢, 拉姆

1 个答案:

答案 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版本,之后你可以随意使用它,包括将它以十进制形式添加到字符串中。