probleme mit der standardausgabe cout/printf
-
nein das wird immer erreicht. aber er erreicht nach paar Tokens die return 1 statements nicht mehr. er kommt in die if-Fälle hinein und macht auch noch das cout aber dann stoppt das Programm.
void Scanner::scan(string inp) { int i = 0; int tokenBegin = 0; Token* token = new Token(); List* list = new List(); while(inp[i] != '\0') { //... noch einige andere fälle else { int twoletters = token->towOut(inp[i],inp[i+1]); if(twoletters == 1) i++; else if(twoletters == 2) i+=2; else { cout << "<ERROR>"; exit(0); } } } token->printMax(); }dort ist der Aufruf von towOut(). Aber wie gesagt bleibt er erst mitten in towOut stehen.
-
Das mit dem debuggen ist halt so eine Sache... Ich habs in Linux entwickelt und kenn mich da leider nicht aus. Aber wenn jemand eine gute IDE kennt wo man auch super debuggen kann bin ich sehr offen für diese Vorschläge

-
-
-
KDevelop
-
while(inp[i] != '\0') { ///Sowas ist eigentlich nicht so günstig. Verwende besser std::string::const_iterator (begin(), end()) oder vergleiche auf length()/size().
Es ist gut möglich dass du in nen Überlauf rein rennst, wenn du ungeprüft i+1 übergibst oder i+=2 machst.
Den MemoryLeak hast du auch gesehen? Leg doch token und List in den automatischen Speicherbereich.
Token token; List list;Zu guter Letzt: KDevelop4++

-
ok habs gefixed.
-
TiakaniZ schrieb:
ok habs gefixed.
Wäre noch interessant zu wissen, wo der Fehler gelegen hat.

-
noch einmal danke für die vielen antworten

-
Es war in einer while-schleife.... ich war echt so dumm und hab in einer liste nicht den zeiger aufs nächste elemnt gesetzt und deshalb gabs ne endlosschleife... habs auch erst mit debug rausbekommen xD