Textdatei lesen und spezielle Zeile löschen?



  • Hi,

    ich stehe vor einem für mich doch relativ großem Problem/Herausforderung:

    Ich muss eine Textdatei erzeugen, die z.B. so aussieht:

    Max;13
    Peter;15
    Hans;70

    Nun lese ich die Zeilen einzeln aus und schaue ob ich z.B. "Peter" finde.
    Wenn ja, dann lese ich dazu noch den Wert hinter dem ";" ein (also "15").

    Im Programm ändere ich jetzt diese Daten auf "Otto" und "65".

    Nun mein Problem:

    Wie kann ich den Datensatz "Peter;15" überschreiben oder löschen, so dass
    ich folgendes erhalte:

    Max;13
    Otto;65
    Hans;70

    Komme ich irgendwie an die Zeilennummer? Wie lösche ich die ganze Zeile dann weg?
    Suchen mache ich momentan über den CString und Find...

    Das Schreiben mache ich momentan so:

    CFile textfile;
    CString m_Output = "c:\\test.txt";
    
    if (!textfile.Open(m_Output, CFile::modeCreate | CFile::modeWrite))
    { 
    AfxMessageBox("Datei konnte nicht geschrieben werden!"); 
    } 
    else
    {
       textfile.Write(userid,strlen(userid));
       textfile.Close(); 
    }
    


  • Zeilen löschen/einfügen geht auf Datei-Ebene nicht so einfach. Wenn du viel mit der Datei vorhast, solltest du sie besser einmal einlesen (z.B. zeilenweise in einen vector<string>), dann im Speicher die Daten bearbeiten und am Ende alles zurückschreiben.


Anmelden zum Antworten