首頁 >後端開發 >C++ >如何在 C 中的 stringstream、string 和 char* 之間安全地轉換?

如何在 C 中的 stringstream、string 和 char* 之間安全地轉換?

Susan Sarandon
Susan Sarandon原創
2024-11-14 17:31:02260瀏覽

How to Safely Convert Between stringstream, string, and char* in C  ?

瀏覽stringstream、string 和char* 轉換

在C 處理字串時,程式設計師在stringstream、string 之間轉換時經常會遇到混亂和char*。本文深入探討了這些轉換的複雜性,澄清了誤解並提供了實用的解決方案。

理解stringstream.str().c_str()

癥結所在問題的關鍵在於理解stringstream.str().c_str() 傳回的字串的生命週期。這個臨時字串物件在表達式末尾被銷毀,使得從它獲得的任何指標(如 const char* cstr2)無效。

解決混亂

到解決此問題,請避免將 stringstream.str().c_str() 直接指派給 const char*。相反,在另一個字串物件中建立臨時字串的副本,然後從中取得C 字串:

const std::string tmp = stringstream.str();
const char* cstr = tmp.c_str();

或者,透過在表達式中使用臨時字串來限制臨時字串的生命週期:

use_c_str( stringstream.str().c_str() );

為了效率和清晰度,將臨時值綁定到const 引用:

{
  const std::string& tmp = stringstream.str();   
  const char* cstr = tmp.c_str();
}

以上是如何在 C 中的 stringstream、string 和 char* 之間安全地轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn