Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 字符串编码为C++;_C++_Encoding - Fatal编程技术网

C++ 字符串编码为C++;

C++ 字符串编码为C++;,c++,encoding,C++,Encoding,我需要将字符串“Test€”转换为“Test€;”,反之亦然。请注意,它是一个字符串,而不是来自xml。对于您的信息,我正在开发C++中的应用程序,并使用XRESE进行XML解析。请帮助我在C++应用中实现它。 谢谢, Ram我认为这个答案可能取决于平台,尽管我不确定 您可以使用stringstreams和casting。如果lookup是保存字符代码十进制版本的字符串,则此函数将返回字符版本: char fixchar(string lookup){ stringstream

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

我认为这个答案可能取决于平台,尽管我不确定

您可以使用stringstreams和casting。如果
lookup
是保存字符代码十进制版本的字符串,则此函数将返回字符版本:

char fixchar(string lookup){
    stringstream converter (lookup);
    int i;
    converter >> dec >> i;
    return (char)i
(请注意,对于前缀为
#x
而不是
#
的十六进制字符串,您可以使用
hex
而不是
dec

通过对原始字符串使用
find
函数,可以获得
lookup
字符串。下面是一个循环,它使用上述函数将包含
&#x[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。