標準文字列実装における c_str() と data() の比較
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 つの関数間の以前の区別がなくなり、同じ操作が実行されるようになります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3