Geöffnete Datei nach Begriffen durchsuchen und diese in Arrays ablegen



  • Hallo,

    mal angenommen ich habe eine Textdatei, die wie folgt so aufgebaut ist:
    #BeginNummer#12345678#EndNummer##BeginText#Dies ist ein Text#EndText##BeginNummer#22334455#EndNummer##BeginText#Noch ein Text#EndText##BeginNummer#...

    Ich möchte die Werte zwischen #BeginNummer# und #EndNummer# sowie die Werte zwischen #BeginText# und #EndText# irgendwie herausfiltern und im Programm zwischenspeichern, so dass ich sie in meinem Programm weiter verarbeiten kann(z.B. um die Datensätze in eine neue Datei zu schreiben).

    Die Text-Datei habe ich mit der Funktion ReadFile bereits geöffnet, die eingelesenen Daten liegen als Zeiger(LPTSTR) auf ein TCHAR-Array vor.

    Mit welchen Methoden kann ich nun am einfachsten die gewünschten Daten extrahieren? Mein Problem ist z.B., dass der Speicher für den Buffer mittels
    LPTSTR DateiBuffer = new TCHAR[FileSize + 1];
    erzeugt wird, die .find-Funktion anscheinend einen string erwartet.
    Muss man erst alles in einen String kopieren und dann durchsuchen?
    Wie groß darf so ein string eigentlich werden?
    Ich wollte nur ungern Teilstücke erstellen und parsen, weil ich dann unter Umständen eine Telefonnummer über zwei Teilstücke suchen muss. Daher hoffe ich auf einen Tipp, wie man diese Aufgabe am besten lösen kann...

    Vielen Dank,
    Tim


  • Mod

    BitsBytesMegabytes schrieb:

    Mit welchen Methoden kann ich nun am einfachsten die gewünschten Daten extrahieren?

    Mit getline. Da kann man Trennzeichen angeben und dann einfach die gewünschten Werte extrahieren. Gegebenenfalls unerwünschtge Einträge mittels ignor (wieder mit trennzeichen) überspringen.

    Mein Problem ist z.B., dass der Speicher für den Buffer mittels
    LPTSTR DateiBuffer = new TCHAR[FileSize + 1];
    erzeugt wird, die .find-Funktion anscheinend einen string erwartet.

    Das geht über C++ hinaus, da kann ich nicht viel zu sagen. Muss es denn unbedingt TCHAR[] sein? std::string klingt einfacher zu handhaben.

    Muss man erst alles in einen String kopieren und dann durchsuchen?

    Nein, siehe oben.

    Wie groß darf so ein string eigentlich werden?

    Die maximale Größe bekommst du mittels max_size 🙂



  • SeppJ schrieb:

    Mein Problem ist z.B., dass der Speicher für den Buffer mittels
    LPTSTR DateiBuffer = new TCHAR[FileSize + 1];
    erzeugt wird, die .find-Funktion anscheinend einen string erwartet.

    Das geht über C++ hinaus, da kann ich nicht viel zu sagen. Muss es denn unbedingt TCHAR[] sein? std::string klingt einfacher zu handhaben.

    std::basic_string<TCHAR> DateiBuffer(FileSize) !?

    bb


Log in to reply