C++の入門書では、s[s.size()]
は予測できないはずです。C++の空の文字列sのs [0]が空文字列なのはなぜですか?
しかし、何度も試してみましたが、他のコードに挿入すると、s[0]
は常に空文字列です。しかし、s
が空の文字列でない場合、s[size()]
にアクセスしようとするとエラーが発生します。
なぜ空の文字列が特別なのですか?
C++の入門書では、s[s.size()]
は予測できないはずです。C++の空の文字列sのs [0]が空文字列なのはなぜですか?
しかし、何度も試してみましたが、他のコードに挿入すると、s[0]
は常に空文字列です。しかし、s
が空の文字列でない場合、s[size()]
にアクセスしようとするとエラーが発生します。
なぜ空の文字列が特別なのですか?
文字列のメンバーアクセスは、文字列ではなく文字を生成します。 [operator[](size_type pos)
について:]
:
s[s.size()]
あなたは値0を書いていることを提供してもあなたは、s[s.size()]
に 書き込みすることができます0 C++ 17であることをC++ 11の保証
:
pos <= size()
が必要です。:
*(begin() + pos)
の場合、pos < size()
の場合。それ以外の場合は、charT()
以外の値にオブジェクトを変更すると、定義されていない動作になります。charT
のオブジェクトへの参照がcharT()
の値を返します。
(charT()
が "ゼロ" のstandardeseである。)
前にC++ 17最後の文が "charT()
以外の値に" という言葉が含まれていなかったものです。これは過度に制限的でした。正しいサイズの文字列に変換することを禁止します。
正確には何ですか? – BlueWanderer
質問をより明確に表現してください。 * 's [0]'は常に空文字列です。* 's [0]'は 'char'なので意味がないので、決して空であってもいなくてもなんでもかまいません。 –
英語が私の母国語ではなく、私の国では英語の学習が普遍的ではないので、私の表現がはっきりしないことは残念です。 – RevolverOcelot