我试图将一个十六进制编码的字符串转换成一个包含解码字符串的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指向堆栈内存,这是不正确的情况 –