標準文字列実装における c_str() と data() の比較
STL および STL における c_str() 関数と data() 関数の違い同様の実装は null 終了に基づいていると広く信じられています。おそらく、c_str() は常に null で終わる文字列を提供しますが、data() は提供しません。
しかし、実際には、実装では data() が内部で c_str() を呼び出すことで、この区別が崩れることがよくあります。これにより、2 つの関数の実際の違いが混乱する可能性があります。
正しい使用法とシナリオ
ドキュメントでは、null の場合は c_str() を使用する必要があると強調しています。 -終了文字列は必須です。 null で終了しない文字列が許容される場合は、特定の実装でパフォーマンスが向上する可能性があるので、data() を使用できます。
文字ベースの文字列を超えて
C の文字列は文字データに限定されないことに注意することが重要です。あらゆるタイプの要素を含めることができます。このような場合、data() は基礎となるデータに直接アクセスするため、より意味のあるものになりますが、c_str() は文字ベースの文字列に重点を置いているため関連性が低くなります。
C 11 以降: 収束
標準の C 11 以降のバージョンでは、data() を null で終了する必要があり、その動作を c_str() の動作と一致させます。これにより、2 つの関数間の以前の区別がなくなり、同じ操作が確実に実行されます。
以上が標準文字列実装の c_str() と data() は大きく異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。