de
Gebot 3: Teste Deinen Code gründlich
Was hätte der Verfasser hier besser machen können?
CString replaceSubstr (CString ostr, CString qstr, CString rstr){
   int tl = 0, tq = 0, posa = 0, pose = 0;
   CString ostra = "", ostre = "";  
   tq = qstr.GetLength();
   posa = ostr.Find(qstr);
   while (posa > 0 ){
      tl = ostr.GetLength();
      posa = ostr.Find(qstr);
      if (posa > 0 ){
         pose = posa + tq;
         ostra = ostr.Mid(0,posa );
         ostre = ostr.Mid(pose,tl);
         ostr = ostra + rstr + ostre;
      }
   }
   return ostr ;
}
  • die Funktion vielleicht auch einmal "richtig" testen, es ist nämlich ein Fehler enthalten...
  • "sprechende" Variablennamen verwenden
  • die erste Zeile hätte er sich schenken können, da beispielsweise tq zuerst mit 0 vorbelegt und gleich darauf die Länge von qstr ermittelt wird.
Die Lösung:

Naja, vielleicht nicht die Lösung, sondern eine Alternative befindet sich hier. Beachte bitte auch das Abbruchkriterium der Whileschleife.
© Michael A. Bosch 1999-2011