Problem mit string::erase



  • Hallo,

    Ich habe folgendes Problem: Ich habe eine Datei in einen String eingelesen und möchte die Daten im String jetzt bearbeitet, das heisst Teile der Daten im String löschen etc...
    Das mache ich so:

    Daten.erase(2,Daten.find("BeginnDaten") + 12);
    

    Beim Debuggen habe ich festgestellt die Daten im String haben ein Länge von 98331. Der gesuchte SubString wird offenbar auch richtig gefunden und befindet sich laut Debugger an Position 49125. Trotzdem ist nach diesen Befehl der ganze String leer, obwohl doch ab Pos 2 nur 49137 Zeichen gelöscht sein müssten von 98331. Was mache ich falsch?

    Danke



  • hi!

    mach mal:

    cout << daten.length() << endl;
    

    nach dem erase...

    cu



  • Hab ich schon gemacht, Ergebnis ist 0, wenn ich ab 0 lösche, 2 wenn ich ab 2 lösche. Es werden also ab der Position immer alle restlichen Zeichen im String gelöscht. Weiss echt nicht mehr weiter



  • #include <iostream.h>
    #include <string.h>
    
    using namespace std;
    
    int main()
    {
    	std::string Input = "Hallo ich bin der string DAS wird gelöscht";
    	Input = Input.erase(Input.find("DAS"),4);
    }
    


  • ob bla.finde("bla")+12 legal ist...?
    versuche mal mit

    it=bla.find("bla");
    std::advance(it,12);
    bla.erase(bla.begin(),it);
    

    die zweite ueberlgung waere, das man nicht int und it mitgeben kann. also:

    std::string::erase(it,it);
    

    oder

    std::string::erase(int,int);
    

    aber nicht

    std::string::erase(int,it);
    

    sind nur gedanken!


Anmelden zum Antworten