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
alsoif(irgendwas) { ... } else { ... }und nicht
if(irgendwas) { ... } if(!irgendwas) { ... }
-
danke, funktioniert!