STL 文字列の c_str() と data() の違いを理解する
STL の c_str() と data() の違い文字列は実装が異なるため、疑問が生じることがよくあります。 c_str() は null 終了を保証し、data() は保証しないと主張する人もいますが、実際の動作は異なる場合があります。
Null 終了と非 Null 終了
理論的には、c_str() は null で終了する文字列を返します。これは、末尾に余分な null 文字 (C の ' ' に相当) が含まれていることを意味します。これは、この方法で終了する文字列を想定する従来の C 関数とのインターフェイスに不可欠です。対照的に、data() は基になる文字配列へのポインタを返しますが、必ずしも null 終了を保証するわけではありません。
実装の詳細
ただし、実際には、一部の実装では内部的に c_str() を呼び出すだけで data() を実装できます。このような場合、両方の関数は事実上同じように動作します。明確にするために、特定の実装のドキュメントを参照することが重要です。
どの関数をいつ使用するか
一般に、経験則は次のとおりです。
C 11 以降
C 11 以降では、標準化の変更が導入されました: data() が必要になりましたnull で終わる文字列を返し、機能的には c_str() と同等になります。
以上がSTL 文字列に c_str() と data() を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。