C++ 字符串编码为C++;
我需要将字符串“Test€”转换为“Test€;”,反之亦然。请注意,它是一个字符串,而不是来自xml。对于您的信息,我正在开发C++中的应用程序,并使用XRESE进行XML解析。请帮助我在C++应用中实现它。 谢谢,C++ 字符串编码为C++;,c++,encoding,C++,Encoding,我需要将字符串“Test€”转换为“Test€;”,反之亦然。请注意,它是一个字符串,而不是来自xml。对于您的信息,我正在开发C++中的应用程序,并使用XRESE进行XML解析。请帮助我在C++应用中实现它。 谢谢, Ram我认为这个答案可能取决于平台,尽管我不确定 您可以使用stringstreams和casting。如果lookup是保存字符代码十进制版本的字符串,则此函数将返回字符版本: char fixchar(string lookup){ stringstream
Ram我认为这个答案可能取决于平台,尽管我不确定 您可以使用stringstreams和casting。如果
lookup
是保存字符代码十进制版本的字符串,则此函数将返回字符版本:
char fixchar(string lookup){
stringstream converter (lookup);
int i;
converter >> dec >> i;
return (char)i
(请注意,对于前缀为#x
而不是#
的十六进制字符串,您可以使用hex
而不是dec
)
通过对原始字符串使用find
函数,可以获得lookup
字符串。下面是一个循环,它使用上述函数将包含[number]
子字符串的字符串(称为fixd
)转换为不包含字符代码的普通字符串:
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版本,之后您可以对其执行任何操作,包括将其以十进制形式添加到字符串中。太宽了。你试过什么?您是否编写了自己的转换方法,但它不起作用?你是否试图使用一些库,但遇到了问题?我还没有编写自己的转换方法,我可以使用一些库来实现这一点。可能的Dup:我很确定这不是重复的;这不是问URL的问题…原始字符串是如何表示和编码的?它是源文件中的srring文本,还是从文本文件中读取,还是来自键盘输入或其他什么?谢谢Kyle。我正在测试这一点,并让你知道我的结果很快。谢谢,它的工作很好。我刚刚更改了fixchar()方法以返回wchar\u t而不是char。fixd也被视为wstring。