ホームページ >バックエンド開発 >C++ >C 11 の `std::string` は Null で終了することが保証されていますか?

C 11 の `std::string` は Null で終了することが保証されていますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-08 14:37:13543ブラウズ

Is C  11's `std::string` Guaranteed to Be Null-Terminated?

C 11 の std::string Null 終了

C 11 では、Null 終了に関する std::string の動作は依然として重要なトピックです。以前のディスカッションで説明したように、Herb Sutter は、ヌル終了を強制し、同時実行性の理由からコピーオンライト実装を禁止する可能性があるように C 0x の要件を厳格化することを提案しました。

C 11 の最終ドラフトでは、これらの提案が採用されました。 [string.accessors] p1 によると、std::basic_string::c_str():

Returns: A pointer p such that p + i == &operator[](i) for each i in [0,size()].

この重要な要件は、文字列 s が与えられた場合、s.c_str() によって返されるポインターが等しくなければならないことを意味します。文字列の最初の文字のアドレス (&s[0])。その結果、&str[0] を利用して std::string の基になる文字配列に安全にアクセスできるようになりました。この動作により、一貫性と信頼性の高いヌル終了が保証され、C スタイルのヌル終了文字列との互換性に適しています。

以上がC 11 の `std::string` は Null で終了することが保証されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。