problem in einer schleife



  • moin,

    #include <iostream>
    #include <windows.h>
    #include <fstream>
    
    using namespace std;       
    int main(){   
        string content;
        int erasewords;
        char c; 
        ifstream file("keys.txt");
        while(file.get(c)) {
                           content += c;
                           }
        while(true){
        Sleep(50);  
        if(content.find("[delete]")){                
        erasewords = content.find("[delete]") -1;   // löscht "[delete]" und das vorangehende Zeichen
        content.erase(erasewords, 9);  
        cout << content << endl;
        }
        if(!content.find("[delete]")){ 
        cout << endl << "Kein [delete] gefunden" << endl;
        break;
        }   
        }
    
        file.close();
        cin.sync();
        cin.get();
        return 0;
    }
    

    das programm soll den inhalt der "key.txt" in den string content schreiben.
    macht es auch. weiter soll es in der schleife immer wieder nach "[delete]" suchen und wenn es gefunden wird "[delete]" + das vorngehende zeichen aus dem string löschen. auch das macht es undzwar genau so lange, bis kein "[delete]" mehr da ist. dann sollte es ausgeben: "Kein [delete] gefunden"
    aber das tud es nicht! stattdessen schließt das programm nach dem letzten "[delete]"-pfund.
    warum macht es das?



  • Der Return-Wert der Methode find ist nicht 0, falls nichts mehr gefunden wurde, sondern std::string::npos!



  • if(!content.find("[delete]")){
        cout << endl << "Kein [delete] gefunden" << endl;
        break;
        }  
    }
    

    Warum "break;"?
    Und: "xy.find("xy")==-1", oder? (-1=nicht gefunden; "!"="false"="0")



  • und es gibt auch else
    also

    if(irgendwas) {
     ...
    } else {
     ...
    }
    

    und nicht

    if(irgendwas) {
     ...
    }
    if(!irgendwas) {
     ...
    }
    


  • danke, funktioniert!


Anmelden zum Antworten