如何删除最后一个字符
问题描述:
下面的函数将产生在两者之间'\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
答
从空的swap
开始,并附加h
+数字,而不是在末尾附加\x
。
此外,您应该在开始结果之前预先分配足够的空间,因为您知道结果的最终长度。这将节省字符串的重新分配。
是的:修正你的逻辑,所以它不会输出错误的东西;-) - 严重的是,你真的需要提供导致错误输出的输入。 – John3136 2012-07-19 03:43:36