Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
この部分だけで私のプログラムがクラッシュします。何故ですか?これは、文字列の各「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;
(コードに「h」の代わりに「u」を記述しました。)
ちょうど「p」である文字列があると仮定しましょう。したがって、s [0]=='p'。ここで、0に「h」を挿入して文字列を「hp」にします(hはpの前にあり、意図したように後ではありません)。次の反復では、iは1であり、ap(そこに移動したばかり)があるため、別のhが挿入されます。これは、メモリがなくなるまで続きます。
試す:
s.insert(i + 1, 1, 'h');