2012-07-19 219 views
-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 
+0

是的:修正你的邏輯,所以它不會輸出錯誤的東西;-) - 嚴重的是,你真的需要提供導致錯誤輸出的輸入。 – John3136 2012-07-19 03:43:36

回答

2

從空的swap開始,並附加h +數字,而不是在末尾附加\x

此外,您應該在開始結果之前預先分配足夠的空間,因爲您知道結果的最終長度。這將節省字符串的重新分配。

相關問題