fehlermeldung
-
also ich lösche einen bestimmten bereich aus meinem string folgendermaßen:
als erstes gibt man eine aufgabe ein bsp: 555+666
so nun bekomme ich die länge der beiden zahlen mit:double prev = fPrev_length(i,sTask); double next = fNext_length(i,sTask);nun möchte ich genau den bereich zwischen dem anfang der 1. zahl und dem ende der 2. zahl löschen:
double start = i - prev; double finish = i + next; cout << sTask << endl; // gibt aus 555+666 sTask.erase(start,finish); cout << sTask; /// gibt ix aus und fehler kommt :/wie kann ich denn anders einen bereich aus einem string löschen?
oder eher warum kommt da ein fehler:
**
Debug Assertion Failed!Program: ...
File: ./xstring
Line: 1508Expression: string subscript out of range
**
-
Hallo,
warum wirfst du nicht einfach mal ein Blick in deine Standardlib-Doku? std::string::erase erwartet als ersten Parameter einen offset und als zweiten eine Länge.
DeinsTask.erase(start,finish);sollte also eher:
sTask.erase(start, finish - start);heißen.
Und warum benutzt du hier doubles? Längen und Offsets sind doch Ganzzahlen.
-
klapt immer noch nicht

int prev = fPrev_length(i,sTask); int next = fNext_length(i,sTask); int start = i - prev; int finish = i + 1 + next; cout << sTask << endl; sTask.erase(start,finish - start); cout << sTask;immer noch beim 1 gibt er 555+666 aus und dann zwar garnix was ja eig richtig ist, aber es kommt wieder die fehlermeldung
-
Dann zeig doch mal bitte das komplette Programm (und testweise könntest du auch mal die Werte von i, prev und next ausgeben).