13

重複の可能性:
文字列 c_str() と data()

C++ クラスをレガシ C コードで動作させるために、以前はstrncpy(dest, src_string, 32)に変換std::stringしていました。char[32]しかし、std::string のc_str()メソッドは常に null で終わる文字列を返しますか?

4

3 に答える 3

26

std::string の c_str() メソッドは常に null で終わる文字列を返しますか?

はい。

その仕様は次のとおりです。

戻り値: for each inのpようなポインター。p + i == &operator[](i)i[0,size()]

iに指定された範囲は閉じていることに注意してください。これsize() 有効なインデックスであり、文字列の末尾を超えた文字を参照します。

operator[]は次のように指定されます。

戻り値:の*(begin() + pos)場合、それ以外の場合は値を持つpos < size()型のオブジェクトへの参照TcharT()

の場合、これはso isstd::stringのエイリアスであり、構築された値の値は 0 です。したがって、 の結果が指す文字配列はゼロで終了します。std::basic_string<char>charTcharcharstd::string::c_str()

于 2012-10-02T20:31:13.797 に答える
12

c_str は「C 文字列」を返します。また、C 文字列は常にヌル文字で終了します。これは C 標準です。

NULL 終了文字列。

于 2012-10-02T20:33:05.000 に答える
2

これによると、答えはイエスです。

于 2012-10-02T20:31:15.747 に答える