banale Frage eines Newbie zu "if" und "for"
-
Hi,
ich starte jetzt mit C++. Und habe auch gleich eine Frage zu
der if und for-Schleife.Wenn ich z.B. folgendes schreibe:
CString var; CString hallo; int z; int l; hallo="aber bar"; // das soll "baer abr" werden ( a und b tauschen) var=hallo.GetLenghth() for(z=0;l>z;z++){ var=hallo.GetAt(z); if(var=="a"){ var="b";//ändere var auf wert "b". } if (var=="b"){ var="a";//ändere var auf wert "a". } }
dann wird ja "a" zu "b" und danach wird leider die 2te Schleife auch noch
genommen und da var nun "b" ist wieder in "a" zurück geschrieben.
Wie kann ich das machen, dass nur 1 If-Schleife geprüft wird und dann
der nächste Wert von GetAt(z) geprüft wird (also "a" zu "b" wird und bleibt) ?
-
Nimm switch.
Aber musst du var dann nicht auch wieder zurück in hallo schreiben?Du könntest auch "continue;" schreiben, dann wird der Schleifendurchlauf abgebrochen.
-
var=hallo.GetAt(z); if(var=="a"){ var="b";//ändere var auf wert "b". } else if (var=="b"){ var="a";//ändere var auf wert "a". }
-
cool, danke !
-
Also Folgendes:
CString gehört nicht zum Standard, benutze std::string
if ist keine Schleife sondern eine Anweisung
Variablen solltest du definieren erst wenn du sie wirklich brauchst und wenn möglich gleich initialisieren.die for-Schleife könnte dann so aussehen:
std::string str("test"); for (int i = 0; i < str.size(); ++i) { switch (str[i]) { case 't': str[i] = 'a'; break; case 'e': str[i] = 't'; break; //usw. } }