標準字串實作中的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( ) 的行為保持一致。這消除了先前兩個函數之間的區別,確保它們執行相同的操作。
以上是標準字串實作中的 c_str() 和 data() 是否有顯著差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!