ホームページ > バックエンド開発 > C++ > C 11 では std::string は常に Null で終了しますか?

C 11 では std::string は常に Null で終了しますか?

DDD
リリース: 2024-12-17 08:59:23
オリジナル
804 人が閲覧しました

Is std::string Always Null-Terminated in C  11?

C 11 では std::string Null-Terminated?

2008 年、Herb Sutter は、C 0x での文字列の実装を厳しくすることを提案しました。ヌル終了。ただし、C 11 標準には別のアプローチが含まれています。

はい、C 11 では std::string は常に null で終了します。

標準では、ポインターがstd::basic_string::c_str() によって返される値は、文字列 (&s[0]) の最初の文字のアドレスと等しくなります。したがって、C 11 で &str[0] を使用するのは安全です。

結果:

  • &str[0] を使用することで、安全かつ効率的な方法が提供されるようになりました。
  • ヌル終了の保証により、C スタイルとの相互運用性が簡素化されます。 API とデータ構造。
  • ただし、これは std::string がコピーオンライト実装であることを意味するものではありません。実装では、コピーオンライトまたは null 終了を保持するその他の戦略を通じてパフォーマンスを最適化することを選択する場合もあります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート