Leerzeichen löschen



  • Guten Nachmittag,

    Ich habe eine Datei in C++ geöffnet. Ich möchte an Ihr ende etwas schreiben. Bis hierher kein Problem, aber manchmal hat die datei hinten 3-5 Leerzeichen. Wenn ich also meinen text in die datei einfügen will, passiert das hinter 5 Leerzeichen.

    Meine Frage ist nun, wie ich die Leerzeichen wegbekomme.



  • Die Komplette Datei in ein CString einlesen .
    Dann über die Memberfunktion CString::TrimRight() die Leerzeichen löschen,
    den neuen Text an das CString dranhängen , kannst du ja bequem mit + machen , und die komplette CString-Variable wieder in die Datei schreiben .
    Vorher natürlich die Datei leeren.
    So würde ich es machen .

    Hoffe du hast es verstanden.



  • @AndyC
    Ita12_Rafael Ansatz ist OK wenn du keine "wichtigen" Leerzeichen sonst wo am Ende einer Zeile in der Datei stehen hast ( ist ja eher unwahrscheinlich ) !!!

    Anstelle die gesamte Datei in den CString einzulesen... würde ich die Datei per CStdioFile zeilenweise einlesen und nur auf die letzte Zeile das TrimRight() anwenden 😉

    Pseudo-Code:

    while ( myStdioFile.ReadString (zeile ) )
    {
      // jede zeile der datei in unsere CArray Variable schreiben
      myCStrinArray.Add(zeile);
    }
    // wieviele Zeilen hat die Datei / Array ( ist ja das Abbild der Datei )
    int lastlinenr = myCStringArray.GetLength();
    
    // letzte Zeile auslesen
    CString lastline = myCStringArray.GetAt(lastlinenr);
    // leerzeichen entfernen 
    lastline.TrimRight();
    
    // deinen text an lastline anhängen 
    
    myCStringArray.RemoveAt(lastlinenr); // alte letzte zeile löschen
    myCStringArray.Add(lastline); // neue letzte zeile anhängen
    
    // jetzt alles per WriteString in eine neue datei wegeschreiben o.ä.
    

    MfG veganza

    P.S. geht bestimmt auch eleganter 😉

    [ Dieser Beitrag wurde am 03.06.2003 um 20:48 Uhr von veganza editiert. ]



  • P.S. geht bestimmt auch eleganter

    Ja, z.B. indem man die Datei von hinten nach vorne einliest, dann den FilePointer auf das erste der letzten Leerzeichen setzt und ab dort beginnt zu schreiben.


Anmelden zum Antworten