我試圖將一個十六進制編碼的字符串轉換成一個包含解碼字符串的const char *緩衝區。 爲此,我有一個函數(string hex_decode(string hex_input)
)接受字符串並對其進行解碼。
自行測試功能幾次後,我嘗試了以下調用:C++:嵌套時,兩個單獨的函數返回不同的結果嗎?
const char* hex_decoded_c_str = hex_decode(input).c_str();
,看到它返回完整的胡言亂語! 在努力調試問題,我把它分成兩個語句,就像這樣:
string hex_decoded_string = hex_decode(input);
const char* hex_decoded_c_str = hex_decoded_string.c_str();
這一次,它完美地工作!
我很困惑,有沒有人知道可能會導致這樣的事情?
@Biffen不再。 –
我敢肯定,你在hex_decode中創建了一個本地字符串對象。由於string類具有深度複製賦值運算符,因此當您返回字符串時,它將被複制到hex_decoded_string對象中,而不會出現內存問題。在前一種情況下,您正在將hex_decoded_c_str指向堆棧內存,這是不正確的情況 –