stringstream、string 和 char* 轉換混亂
本文解決了將 const char* 分配給 stringstream傳回的字串的問題.str().c_str().
問題說明
stringstream.str() 建構一個臨時字串對象,該物件在表達式末尾被銷毀。當將此臨時字串指派給 const char* 時,指標引用了已刪除的字串,從而導致垃圾輸出。
下面是一個範例:
在上面的程式碼中,表達式之後結束後,由stringstream.str() 建立的臨時字串被刪除,導致cstr 指向無效的記憶體位置。
解決方案
要修正此問題,在將臨時字串轉換為 const char* 之前,應將其複製到另一個字串物件。這可以使用以下方法來實現:
獎勵積分說明
以下修改後的程式碼可以正確列印字串:
此修改之所以有效,是因為:
以上是為什麼將 stringstream.str().c_str() 指派給 const char* 會導致垃圾輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!