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