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: 1508

    Expression: 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.
    Dein

    sTask.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).


Anmelden zum Antworten