Stringinhalt in neuen String einfügen
-
Hallo Leute,
habe grad ein kleines Problemchen.
Ich habe z.B. den String ab und der Inhalt ist "007".
Nun möchte ich, dass der Inhalt des Strings gelesen wird,
die 0 durch 1 ersetzt wird und die 7 durch 8 und dann in einen
neuen String bc gepackt wird.string ab, bc; getline(cin, ab) for (int i = 0 ~~ und weiter?!){ if (ab[i]=='0')strcat(bc,"1"); if (ab[i]=='7')strcat(bc,"8"); }
Warum geht das nicht?
-
if (ab[0] == '0') ab[0] = '1';
Ist eventuell einfacher.
strcat ist eine C-Funktion für char-Arrays, nicht für std:string.
-
strcat() funktioniert nur mit C-Strings (nullterminierte char-Arrays), für C++ Strings (std::string) kannst du stattdessen push_back(), append() oder auch += verwenden. (zur Not auch insert())
-
Fellhuhn schrieb:
if (ab[0] == '0') ab[0] = '1';
Ist eventuell einfacher.
strcat ist eine C-Funktion für char-Arrays, nicht für std:string.
Ja aber so wird das doch nur in ab geändert und nicht in bc geändert.
if (ab[0]=='0')insert(bc,"1");
Des funktioniert auch nicht
Und des ab[i] ist ja mit i dazu gedacht das man nicht manuel 0 1 2 etc eintragen muss
-
Ah, okay, du liest einen String ein, willst den aber nicht verändern, sondern eine Kopie davon. Okay.
string ab, bc; getline(cin, ab) bc = ab; for (int i = 0 ~~ und weiter?!){ if (bc[i]=='0') bc[i] = '1'; if (bc[i]=='7') bc[i] = '8'; }
-
Nein, nicht Kopie
In String ab steht jetzt z.B. 007.
Nun will ich das dies umgewandelt wird, also für ne 0 eine 1 und für eine 7 eine 8 und dabei in String bc gepackt wird, damit dann in String bc letzenendes 118 steht.
Hoffe sie verstehen was ich meine.
-
Also im Endeffekt sollen beide verändert sein?
string ab, bc; getline(cin, ab) for (int i = 0 ~~ und weiter?!){ if (ab[i]=='0') ab[i] = '1'; if (ab[i]=='7') ab[i] = '8'; } bc = ab;
-
zeichen-weise vorgehen
solange string laenge:
-zeichen holen []
-zeichen nach int
-int inkrementieren
-int nach zeichen
-zeichen schreiben []
-
Fellhuhn schrieb:
Also im Endeffekt sollen beide verändert sein?
string ab, bc; getline(cin, ab) for (int i = 0 ~~ und weiter?!){ if (ab[i]=='0') ab[i] = '1'; if (ab[i]=='7') ab[i] = '8'; } bc = ab;
if (ab[i]=='0')insert(bc,"1");
Also: Wenn in ab '0' ist dann füge dies in den string bc als '1' ein.
Nur if (eingabe[i]=='b')strcat(Buffer,"n"); funktioniert wie gesagt nicht.
-
Wie bereits gesagt - strcat() funktioniert nicht für C++-Strings (aus gutem Grund). Die bessere Lösung ist:
if(eingabe[i]=='b') Buffer+="n"; /* oder: Buffer.append("n"); Buffer.push_pack('n'); Buffer.insert(Buffer.size(),"n"); ... */
-
Ok danke für die "Lösung"!
-
Was hast du? Die angegebenen Funktionen liefern auf C++ Strings das selbe Ergebnis wie deine strcat()-Lösung auf C Strings. Wenn du damit ein Problem hast, formuliere deine Anforderungen genauer.