16

std::string::data()なぜ電話をかけたいのstd::string::c_str()ですか?確かに、ここには標準の狂気への何らかの方法があります...

4

3 に答える 3

19

c_str() は NUL 終了を保証します。data() はしません。

于 2009-10-07T21:46:24.243 に答える
6

c_str() は、NUL バイトが追加されたデータへのポインターを返すため、戻り値を「C 文字列」として使用できます。

data() は、データへのポインタを変更せずに返します。

使用しているコードが、文字列が NUL で終了していると想定している場合 (C 文字列を処理するために作成された関数など)、c_str() を使用します。

于 2009-10-07T21:46:58.417 に答える
1

MS STL 10.0では、ヘッダーに次のように表示されるため、違いはないようです。

...\Microsoft Visual Studio 10.0\VC\include\xstring

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());
    }

だから彼らは同じものを返します。

于 2011-07-06T22:07:02.533 に答える