0

この部分だけで私のプログラムがクラッシュします。何故ですか?これは、文字列の各「p」の後に「u」を追加するためのものです。

for(int i=0;i<s.size();i++)
{
    if((s[i]=='p'))
    {
        s.insert(i,1,'u');
    }
}
cout<<"after adding u after each p: "<<s;
4

1 に答える 1

3

(コードに「h」の代わりに「u」を記述しました。)

ちょうど「p」である文字列があると仮定しましょう。したがって、s [0]=='p'。ここで、0に「h」を挿入して文字列を「hp」にします(hはpの前にあり、意図したように後ではありません)。次の反復では、iは1であり、ap(そこに移動したばかり)があるため、別のhが挿入されます。これは、メモリがなくなるまで続きます。

試す:

s.insert(i + 1, 1, 'h');
于 2012-12-15T20:54:53.360 に答える