2012-02-01 8 views
1

この小さなコードではバグを見つけることができません。何が問題なの?文字列サイズが望ましくない出力

string f,s; 
f[0] = 'd'; 
s.append(f); 
cout<<f.length()<<" "<<f<<" "<<f[0]<<endl; 
cout<<s.length()<<" "<<s<<" "<<s[0]<<endl; 
Output is : 
0 d 
0 d 

私はs.sizes.lengthを変更しても、結果は同じです。 s[0] = 'd's.size() = 0;はなぜですか?

+2

を行う必要があり

はあなたのコードのバグを修正し、謎が消えます。 –

答えて

5

文字列を作成するときに両方の文字列が空であり、文字は含まれません。 f[0]は範囲外です。空のコンテナの要素にアクセスすることは未定義の動作です。したがって、何かが法的に発生する可能性があります。あなたは

string f(1, 'd'), s; // creates f with 1 repetition of 'd' 
s.append(f); 
... 

それとも

string f, s; 
f += 'd'; // or f.push_back('d'), or f.append('d'), or... 
s.append(f); 
... 
関連する問題