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.
    	}
    }
    

Anmelden zum Antworten