-1

文字列「Test €」を「Test € ;」に変換する必要があります。およびその逆。xml からではなく文字列であることに注意してください。参考までに、私は C++ でアプリケーションを開発しており、XML 解析にも Xerces を使用しています。C ++アプリケーションでどのように達成できるか教えてください。

ありがとう、ラム

4

1 に答える 1

0

確かなことはわかりませんが、この答えはプラットフォームに依存する可能性があると思います。

文字列ストリームとキャストを使用できます。lookupが文字コードの 10 進バージョンを保持する文字列の場合、この関数は文字バージョンを返します。

char fixchar(string lookup){
    stringstream converter (lookup);
    int i;
    converter >> dec >> i;
    return (char)i

#x(の代わりにがプレフィックスとして付いている 16 進文字列の場合は、 の代わりに使用できることに注意してください#) 。hexdec

元の文字列に対して関数を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 バージョンを取得できるはずです。その後、文字列に 10 進形式で追加するなど、好きなことを行うことができます。

于 2013-03-07T07:07:51.570 に答える