ホームページ >バックエンド開発 >C++ >C 11 では、c_str() および data() にヌル終了文字列が必要ですか?

C 11 では、c_str() および data() にヌル終了文字列が必要ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-27 03:15:02307ブラウズ

 Does C  11 Require Null-Terminated Strings for c_str() and data()?

C 11 では、c_str() メソッドでヌル終端以外の文字列を使用できますか?

C 11 では、c_str( )basic_string クラスが変更されました。これは現在、data() と同等であると定義されており、文字列の n 番目の要素へのポインタを返すように定義されています。ここで、n は 0 から文字列のサイズから 1 を引いた値までです。

ただしc_str() と data() の両方の基礎となる、operator[] メソッドの更新された定義により、文字列が内部で null で終了するバッファを使用する必要があることが明確になりました。

具体的には、operator[] メソッドには次のものが必要です。戻り値は、charT() の値を持つ T 型のオブジェクトへの参照です。ここで、T は文字列要素の型、charT() は null 文字の型です。さらに、この参照値は変更できません。

c_str() と data() は両方とも O(1) 操作である必要があるため、実装では基本的に null 終了バッファーの使用が強制されます。さらに、operator[] メソッドの戻り値要件は、終端の null 文字が文字列の要素と同じバッファ内に存在する必要があることも意味します。

以上がC 11 では、c_str() および data() にヌル終了文字列が必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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