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