質問の形式を念頭に置いて、いくつかのタイトルのオプションを次に示します。 ダイレクトかつクリア: * `string::c_str()` は C 11 でも Null で終了していますか? * `string::c_str()` は C での Null 終了を保証しますか

Barbara Streisand
リリース: 2024-10-26 14:34:02
オリジナル
273 人が閲覧しました

Here are a few title options, keeping in mind the question format:

Direct and Clear:

* Is `string::c_str()` Still Null-Terminated in C  11?
* Does `string::c_str()` Guarantee Null Termination in C  11?

More Engaging:

* C  11 Mystery: Is `string::c_str

C 11 では String::c_str() は Null で終了しなくなりました?

C 11 の string:: の動作c_str() については議論の余地があります。一部の情報源では、Null で終わる文字列が生成されなくなる可能性があると示唆しています。

しかし、詳しく調べると、そうではないことが明らかになります。 C 11 の Operator[] の定義では、文字列が内部で NULL 終了バッファを使用する必要があります。これは、operator[] に関して定義された c_str() も null で終了する文字列を返さなければならないことを意味します。

具体的には、C 11 標準のセクション 21.4.5 では、operator[] が返さなければならないと規定されています。 「値 charT() を持つ型 T のオブジェクトへの参照。参照された値は変更されません。」これは、文字列の末尾に null 文字が含まれている必要があることを意味します。

さらに、セクション 21.4.7.1/1 では、c_str() を「各 p i == &operator[](i) となるようなポインタ p」として定義しています。私は [0,size()] にあります。」これは、c_str() が、null で終了する必要がある、operator[] と同じバッファへのアクセスを提供することを意味します。

したがって、最初の懸念にもかかわらず、string::c_str() は依然として null を生成することが保証されています。 C 11 の終了文字列。

以上が質問の形式を念頭に置いて、いくつかのタイトルのオプションを次に示します。 ダイレクトかつクリア: * `string::c_str()` は C 11 でも Null で終了していますか? * `string::c_str()` は C での Null 終了を保証しますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!