C 11 の string::c_str() は Null 終了を排除しますか?
C 11 では、string::c_str はもはやヌル終了を保証しません
Reason:
C 11 では、string::c_str は string::data と同一として定義され、さらに string::data が定義されます。 0
Consequences:
これは、string::c_str() が返されなくなる可能性があることを意味します。 null で終了する文字列。このような終了を想定したシナリオでは潜在的なエラーが発生します。
解決策:
解決策は、string::c_str() を次の場合にのみ使用することです。従来のコードとの互換性。新しいコードの場合は、代わりに string::data() を使用してください。 string::data() は null で終了する文字列を返しませんが、内部で null で終了することが保証されている基になるバッファへのポインタを返します。
実装の詳細:
内部的には、文字列は null で終了するバッファを使用する必要があります。セクション 21.4.5 の Operator[] 定義では、size()
補足:
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3