2016-09-24 4 views
1

私はこのコードをC++で書いています。文字列がC++で目的の出力を印刷しないのはなぜですか?

std::string s; 
s[0] = 'a'; 
std::cout << s; 

結果は次のようになります。

なぜこれが何の印刷は何もありませんか?質問は簡単ですが、より良い方法で説明することができます。

+1

http://www.cplusplus.com/reference/string/string/にアクセスすることをお勧めします。 –

答えて

1
インデックス
std::string s; // s is default constructed (s.length() returns 0) 
//s[0] = 'a'; // modifying elements that are out of bounds causes undefined behavior 
s.resize(1); 
s[0] = 'a'; // OK, s.length() is 1 
std::cout << s << std::endl; 
7

文字列サイズは開始からゼロです。したがって、インデックスゼロにアクセスすることはできません。代わりに

s = "a"; 

やっていることは今文字列がサイズ1を持っており、これは、アクセスのに許可されている[0]一般に

あなたかもしれない、ゼロからサイズ-1にしか際サイズ> = 1

関連する問題