[C++] Analyse von Textdateien nach Eingabestrings (mit Zusatzparametern)

R

Rabenschwarz

Hallo,

vor folgender etwas umfangreicheren Aufgabe (C++) sitze ich:

Eine (beliebig lange) Textdatei soll nach einem Input-String durchsucht werden, die Ausgabe soll in allen Wörtern dieser Datei bestehen, die besagten String enthalten, gleichzeitig soll diese Ausgabe in einer weiteren Datei gespeichert werden. In der Eingabe soll man noch (optionale) Parameter hinzufügen können, die angeben, ob sich die Zeichenkette am Anfang des Wortes (a), in der Mitte (m) oder am Ende (e) befinden soll, außerdem evtl. noch die Berücksichtigung von Sonderzeichen (s), also Kommata, Punkte usw.

Beispielsweise könnten bei der Eingabe "auf a" Ausgabewörter wie "auffangen", "aufgeben" usw., bei "auf m" Wörter wie "hinaufgehen", "Baufirma" usw., bei "auf e" Wörter wie "Türknauf", "Dauerlauf" usw. herauskommen.

Die Textdatei soll geöffnet und gelesen, jedoch nicht in einen String kopiert o.ä. werden (was ja ineffizient wäre, da der Text ja unter Umständen sehr groß sein kann). Also muss u.a. ja auch verhindert werden, dass die Datei während der Bearbeitung geändert wird. Es sollen letzten Endes nicht nur reine Textdateien (.txt), sondern auch rtf-, html- (online!) und evtl. sogar pdf-Dokumente durchsucht werden können. Schließlich soll das alles noch in einer grafischen Umgebung (mit Fenstern, Menüs usw.) dargestellt werden.

Da ich noch blutiger Anfänger in C++ bin, weiß ich erst einmal kaum, wie ich anfangen soll. Zuerst einmal möchte ich nur die eigentliche Funktionalität des Projektes betrachten, sprich die String-Suche, und das auch nur auf reine Textdateien beschränkt, ohne Grafiken usw. Ich benutze Bloodshed Dev-C++.

Kann mir jemand Tipps geben, wie ich an die Sache herangehen könnte, z.B. wie ich Textdateien behandle, sie öffne (und mit Schreibschutz versehe) und die eigentliche String-Suche bewerkstellige?

Gruß, Rabenschwarz
 
Da hast Du ja einiges vor. Für einen Anfänger ist das eine recht anspruchsvolle Aufgabenstellung.

Bloodshed kenne ich nicht, deshalb kann ich Dir keine speziellen Tipps geben.

Das Setzen des Schreibschutzes und anderer Dateiattribute ist OS-abhängig unterschiedlich (Windows, Linux, Mac?). Ist es denn nötig?

Ansonsten kann ich Dir mit ein paar Stichwörtern weiterhelfen (such mal danach in Deiner Doku):

Verwende die C++-STL (Standard Template Library).
std::ifstream (ein Eingabestream) eignet sich für das Einlesen aus Dateien.
std::eek:fstream (ein Ausgabestream) eignet sich für das Schreiben in Dateien.
std::string (ein Stringklasse) eignet sich für diverse Textoperationen und auch das Suchen nach Substrings.
std::eek:stringstream bzw. std::istringstream sowie std::vector sind vielleicht noch interessant.
std ist der namespace, in dem Du die erwähnten Klassen findest.

Wenn Du noch Fragen hast, lass es uns wissen. Du hast übrigens eine ziemlich konstruktive und klare Art, Fragen zu stellen. :p
 
Zurück