-2

次の関数は'\x'、間に文字列を生成します。

string GetHexEncode(string hexstring){
    string swap = "\\x";
    string h = "\\x";
    int si = hexstring.length();
    for (int i=0; i<hexstring.length(); i++)
    {
        if (i%2==0){
            swap+=hexstring.at(i);
        }
        else
        {
            swap+=hexstring.at(i)+h;
        }
    }
    return swap;
}

場合によっては、プログラムは次のように出力します。

\x45\x39\xD3\x5B\x4F\xEA\x6F\x3C\xBC\x1B\xA0\xF4\xE7\x41\xE5\x8
\x45\x39\xD3\x5B\x4F\xEA\x6F\x3C\xBC\x1B\xA0\xF4\xE7\x41\xE5\x

これが発生した場合、最後の部分を次のように変更する方法はありますか:

\x45\x39\xD3\x5B\x4F\xEA\x6F\x3C\xBC\x1B\xA0\xF4\xE7\x41\xE5
4

1 に答える 1

2

末尾に an を追加する代わりに、空で開始し、+ 桁をswap追加します。h\x

swapさらに、結果の最終的な長さは以前にわかっているため、結果を開始する前に十分なスペースを事前に割り当てる必要があります。これにより、文字列の再割り当てが節約されます。

于 2012-07-19T03:49:31.150 に答える