<String> Teilstring umkehren
-
Ich habe folgendes Problem mein Programm stürzt bei diesen Zeilen ab. Ich möchte nur wissen weshalb es nicht möglich ist einen Teilstring im String rückwerts so zu ersätzen.
int anfang,ende; cout<<"An Welcher Position soll angefangen werden ?"<<endl; cin>>anfang; cout<<"An Welcher Position soll beendet werden ?"<<endl; cin>>ende; int zu=0; //zu und i sind Zählervariablen for(int i = ende-1 ; i >= anfang-1; i--,zu++) { tamp[zu] = string[i]; //tamp ist eine Temporäre //Variable wo der Teilstring umgekehrt gespeichert wird } string.replace(anfang-1,ende-anfang+1,tamp); /*meine Variable heist string und hier soll der Stringteil durch tamp ersetzt werden*/ cout<<string;danke schonmal für alle Antworten
-
String replace wird intern einen Zähler hochzählen. Wenn du etwas rückwärts ersetzen möchtest, nimm reverse Iteratoren.
Zum Absturz: Zu wenig Information. Wir wissen weder was tamp noch was string genau sind, noch welche Werte du für Anfang und Ende hast. Die Indizes werden nicht existieren, das wird alles sein. Das sollte sich mit einem Debugger in Windeseile finden lassen.
Außerdem behaupte ich mal, dass dies nicht dein Originalcode ist, sondern ein Beispiel welches eventuell nicht äquivalent zu deinem Original ist.
-
//include <algorithm> int anfang,ende; cout<<"An Welcher Position soll angefangen werden ?"<<endl; cin>>anfang; cout<<"An Welcher Position soll beendet werden ?"<<endl; cin>>ende; std::reverse(string.begin()+anfang,string.begin()+ende); cout<<string;oder
int anfang,ende; cout<<"An Welcher Position soll angefangen werden ?"<<endl; cin>>anfang; cout<<"An Welcher Position soll beendet werden ?"<<endl; cin>>ende; while(anfang<=ende){ char tamp=string[anfang]; string[anfang]=string[ende]; string[ende]=tamp; } cout<<string;
-
Danke, dass du meine Hausaufgaben machst.