如何删除最终字符

时间:2012-07-19 03:26:26

标签: c++ string

以下函数将在其间生成一个'\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

1 个答案:

答案 0 :(得分:2)

以空swap开头,并附加h +个数字,而不是在结尾附加\x

另外,您应该在开始结果之前在swap中预先分配足够的空间,因为您知道之前结果的最终长度。这样可以节省字符串的重新分配。