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 サイトの他の関連記事を参照してください。