C 11 の string::c_str() は Null 終了を排除しますか?
C 11 では、string::c_str はもはやヌル終了を保証しませんnull で終了する文字列を生成します。
Reason:
C 11 では、string::c_str は string::data と同一として定義され、さらに string::data が定義されます。 0
結果:
これは、string::c_str() が返されなくなる可能性があることを意味します。 null で終了する文字列であり、そのような終了を想定したシナリオでは潜在的なエラーが発生します。
解決策:
解決策は、string::c_str() を次の場合にのみ使用することです。従来のコードとの互換性。新しいコードの場合は、代わりに string::data() を使用してください。 string::data() は null で終了する文字列を返しませんが、内部で null で終了することが保証されている基になるバッファへのポインタを返します。
実装の詳細:
内部的には、文字列は null で終了するバッファーを使用する必要があります。セクション 21.4.5 の Operator[] 定義では、size()
追加の注意事項:
以上がC 11 の `string::c_str()` はまだ Null で終了していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。