重複の可能性:
文字列 c_str() と data()
C++ クラスをレガシ C コードで動作させるために、以前はstrncpy(dest, src_string, 32)に変換std::stringしていました。char[32]しかし、std::string のc_str()メソッドは常に null で終わる文字列を返しますか?
重複の可能性:
文字列 c_str() と data()
C++ クラスをレガシ C コードで動作させるために、以前はstrncpy(dest, src_string, 32)に変換std::stringしていました。char[32]しかし、std::string のc_str()メソッドは常に null で終わる文字列を返しますか?
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()
c_str は「C 文字列」を返します。また、C 文字列は常にヌル文字で終了します。これは C 標準です。
これによると、答えはイエスです。