File Management Functions: GetLine (Bessere Lösung?)



  • Hi,

    aus der STL gibt es bei den FileStreams Funktionen die Daten solange einlesen bis man an ein \n bzw. \r\n gelangt.

    Sowas gibt es bei ReadFile und co. natürlich nicht. Da ich jedoch auch viel mit Textformaten arbeite (xml, txt, ini, inf usw.) benötige ich natürlich so eine Funktion. Auf der Suche in der MSDN habe ich jedoch weder eine Funktion gefunden zum Suchen eines bestimmten Zeichens in einer Datei noch irgendwelche anderen Ansatzpunkte zu diesem Thema, nur das Setzen des Lesezeigers ist möglich.

    Also selbst ist der Mann (mal wieder :D): Daher habe ich mir so eine Funktion geschrieben, diese hat intern einen Puffer und ließt immer 1 Zeichen rein, ist dieses dann ein \n bzw. EOF wird aufgehört zu lesen und der Puffer zurück gegeben.

    Leider ist dieser Ansatz nicht sehr "flott" (jeodch schneller als die STL Funktionen) - läuft aber prächtig! Daher meine Frage: Gibt es irgendwie einen besseren Ansatz? z. B. Sowas wie "Such mir folgendes Zeichen und gib mir die Position wieder"? auf dieser Seite der MSDN habe ich nichts passendes gefunden:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/file_management_functions.asp

    Danke im voraus!

    - Patrick



  • Es gibt da viele Ansätze... von der WinAPI wird da aber nichts direkt unterstützt...



  • Jochen Kalmbach
    Hmn das die WinAPI da nicht viel bietet ist mir klar, nur: Was gibt es denn für bessere Ansätze btw. wo finde ich davon ein Paar?



  • Hmm... haben wir hier kein "Algorythmen" Forum... sollte man mal einführen 😉

    Hab es jetzt nicht geprüft:
    http://www.cs.sunysb.edu/~algorith/files/string-matching.shtml



  • Jochen Kalmbach
    Na ja, was das jetzt mit "höheren" Algos zu tun hat, weiß ich zwar net, da es nur ein Zeichen ist was er finden muss und die Position davon wiedergeben muss aber egal 🙂

    Ich schaus mir mal an.



  • Es geht ja darum z.B. einen eigenen Cache aufzubauen, indem man dann schneller finden kann... aber das OS Cache sollte eigentlich in den meisten Fällen ausreichen... ich würde halt immer 1024-4096 Bytes lesen und erst dann suchen... und nicht jedes Byte lesen...



  • Jochen Kalmbach
    Irgendwo bist Du ja genial! Werde es gleich ausprobieren, thx!



  • *lol*
    Was ist daran genial?


Log in to reply