std::string 的方法c_str() 和 data() 有什么區別


1、從C++標准上的解釋來看,只有一點區別:


c_str() 返回一個指向正規C字符串的指針常量,該指針保證指向一個 size() + 1 長度的空間,而且最后一個字符肯定是 \0 ;


而 data() 返回的指針則保證指向一個size()長度的空間,不保證有沒有null-terminate,可能有,可能沒有,看庫的實現了。

 

2、有的STL的實現中,二者是完全一樣的,如vs7.1,兩個函數的源碼中,data()函數內部調用的是c_str():

const _Elem *c_str() const
{ // return pointer to null-terminated nonmutable array
    return (_Myptr());
}

const _Elem *data() const
{ // return pointer to nonmutable array
    return (c_str());
}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM