Datei durchsuchen, anschließend Ergebnis ausgeben

D34DL1NES

Erfahrenes Mitglied
Hallo,

ich muss hier ein Programm schreiben bei dem man anfangs ein paar Werte angibt und anschließend eine Datei nach diesen Werten durchsucht werden soll. Wenn eine 100%ige übereinstimmung gefunden wurde, soll der Name/id der in diesem Fall "Veranstaltung" ausgegeben werden.

Hier mein bisheriger Code:
Code:
#include "stdafx.h"
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
	cout<<"Ort: ";
	cin>>ort;
	cout<<"\nZeit (tt.mm.jjjj): ";
	cin>>time;
	cout<<"\nTyp: ";
	cin>>typ;
	//-----------------

    const char *inputFilePath = "daten.txt";
    const char *outputFilePath = "ergebnisse.txt";
 
    ifstream inputFileStream(inputFilePath);
    if (!inputFileStream)
    {
        cerr << "Could not open " << inputFilePath << " for reading " << endl;
        return 1;
    }
 
    ofstream outputFileStream(outputFilePath);
 
    string line;
    while (getline(inputFileStream, line))
    {
		if (line.find(ort) != string::npos && line.find(time) != string::npos && line.find(typ) != string::npos) {
			cout<<"Datensatz gefunden!";
            outputFileStream << line << endl;
        }
   
    inputFileStream.close();
    outputFileStream.close();
	system("pause");
	return 0;
	}
}

Das Problem an der Sache ist, das mit dieser Methode schwachsinnigerweise eine Outputfile erstellt wird wo dann das Suchergebnis drin steht.

Meine Inputfile sieht so aus:
Code:
Arnstadt 23.6.2009 lesung Diashow - Amerika
Ilmenau 0 sport Schwimmbad
Stützerbach 27.6.2009 kino Film - Der Vorleser
Manebach 17.6.2009 markt Fischmarkt
Bei der Angabe von diesen Daten: Ort: Stützerbach time: 27.6.2009 typ: kino
soll folgende Ausgabe erscheinen:
Code:
Film - Der Vorleser

Ich hoffe ich habe mein anliegen recht klar beschrieben und ich hoffe auch dass mit der ein oder andere vlt. helfen kann :) Danke schon einmal im vorraus!
 
Hallo,

du könntest jede Zeile gleich beim Einlesen in ihre Bestandteile (Ort, Datum, Typ, Titel) aufspalten und dann bei Erfolg nur den Titel ausgeben. Dadurch kannst du dann auch die Komponenten gezielt mit den Suchworten vergleichen, wodurch deine Suchfunktion auch robuster werden würde (in der jetzigen Form könnte man z.B. auch "Amerika" als Ort eingeben und würde trotzdem ein Ergebnis finden).

Kleines Beispiel:
C++:
string ort, datum, typ, titel;
while (inputFileStream) {
    inputFileStream >> ort >> datum >> typ;
    if (!inputFileStream) break;
    getline(inputFileStream, titel);
    // Vergleich mit Suchwörtern und ggf. Rausschreiben des Titels
}

Grüße, Matthias
 
Kommt nicht vor, in der File stehen nur 4 Orte und die bestehen alle aus einem Wort. Funktioniert alles Super, danke vielmals :)
 
Zurück