string fehler
-
folgende warnung:
Unbehandelte Ausnahme bei 0x757ab727 in OgameBot.exe: Microsoft C++-Ausnahme: std::out_of_range an Speicherposition 0x0038f2d0..bei folgendem code:
int posg = source.find("<div class=\"supply"+div_class+"\">"); string bigstr = source.substr(posg, 600); int posz = bigstr.find("<span class=\"level\">"); string numstr = bigstr.substr(posz, 100); int i = 0; while(i<=100) { stringstream ss; ss << i; string s(ss.str()); int ende = numstr.find(s); if(ende != -1){ cout<<ende;return s;break;} i++; }fehler entsteht bei string numstr = bigstr.substr(posz, 100);
was kann der fehler sein?
-
bammes schrieb:
was kann der fehler sein?
Da wird bigstr wohl weniger big sein als der Name vermuten lässt oder er enthält nicht die Zeichenfolge "<span class=\"level\">". Ungeprüftes Benutzung des Ergebnisses von find und magische Zahlen wie 100 und 600 lassen mir jedenfalls das kalte Grauen den Rücken runterlaufen. Der ganze Code riecht nach Fehlern die nur darauf warten zu passieren. Was soll beispielsweise dieser Blödsinn "return s;break;"?
-
Schau dir mal http://www.boost.org/doc/libs/release/libs/regex/ an, das kann sowas besser als der standardstring.