この説明では、C 標準テンプレート ライブラリ (
Null 終了の問題
一般的に、c_str() は常に null で終了する文字列を返し、文字列で終了することを示していると言われています。 null 文字 (' ') はありませんが、data() はそうではありません。ただし、この区別は実装固有であることがよくあります。
実装の詳細
実際の実装では、data() は内部で c_str() を呼び出して、ヌル終了表現を取得する場合があります。 。あるいは、両方の関数が同じ操作を実行し、明示的な null 終端を使用せずに基になる文字列データへのポインタを返すこともできます。
使用上の影響
この差異は、次の重要性を強調しています。使用している特定の実装を理解する。一般に、C スタイル API またはバイナリ プロトコルとの相互運用性のためにヌル終了文字列が必要な場合は、c_str() を使用します。それ以外の場合、null 終了が必要ない場合は、data() のパフォーマンスが向上する可能性があります。
型の多様性
もう 1 つの考慮事項は、C の文字列が文字だけで構成されているわけではないということです。あらゆるタイプの要素を含めることができます。このような場合、data() の名前が返されるデータの一般的な性質をよりよく反映しているため、data() の方が適切です。
C 11 Update
次のことに注意してください。 C 11 以降では、data() と c_str() の両方が同一に動作することが義務付けられています。これは、data() が null で終わる文字列を返す必要があることを意味し、前述の区別がなくなりました。
以上がC STL で c_str() と data() を使用する場合は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。