如何删除最后一个字符

问题描述:

下面的函数将产生在两者之间'\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 
+0

是的:修正你的逻辑,所以它不会输出错误的东西;-) - 严重的是,你真的需要提供导致错误输出的输入。 – John3136 2012-07-19 03:43:36

从空的swap开始,并附加h +数字,而不是在末尾附加\x

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