標準字串實作中的c_str()與data()
STL中c_str()和data()函數的區別人們普遍認為類似的實作是基於空終止的。據推測,c_str() 總是提供以 null 結尾的字串,而 data() 則不然。
然而,在實踐中,實作經常透過讓 data() 在內部呼叫 c_str() 來消除這種區別。這可能會導致人們對兩個函數之間的實際差異感到困惑。
正確用法和場景
文件強調指出,當 null 時應使用 c_str()需要以 - 結尾的字串。如果可接受非空終止字串,則可以使用 data(),因為它可以在特定實作中提供更好的效能。
超越基於字元的字串
值得注意的是,C 中的字串不限於字元資料。它們可以包含任何類型的元素。在這種情況下,data() 變得更有意義,因為它直接存取底層數據,而 c_str() 由於強調基於字元的字串而不太相關。
C 11 及以後:收斂
在C 11 及更高版本的標準中,data() 現在需要以null 終止,使其行為與c_str( ) 的行為保持一致。這消除了先前兩個函數之間的區別,確保它們執行相同的操作。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3