Schlüßelwort in txt finden
-
Hallo,
Ich habe folgendes Problem:Ich habe eine Datei(.txt), die wie folgt aufgebaut sein kann:
Name: "Max Mustermann" Alter: "18" ... ...Nun will ich Schlüsselwörter wie "Name" oder "Alter" darin suchen und die Infos dahinter "verwenden".
Zum Beispiel so:
Pseudocode:If (name=="Max Mustermann") { mache ..... }Ich danke für jede Hilfe

-
Hi,
nimm einfach das JSON Format http://de.wikipedia.org/wiki/JSON und nutz eine der Bibliotheken für C/C++ von der Seite www.json.org. Das wäre die einfachste Lösung für eine solche Klartext-Datenhaltung.
Sonst müsstest du halt einen eigenen Parser schreiben (für Lernzwecke nicht schlecht) oder eben mit den guten alten sequentiellen Dateien arbeiten (schlage dies in einem C++ Buch nach).
-
Und hast du auch eine Frage?
-
Und lerne erstmal C++. Ich seh, du hast keine Lust, selber was zu machen. Noch einer von der Sorte: "ach, kann das nicht jemand für mich machen?!"
-
Meine Lösung:
std::fstream File("MyFile.txt"); //File öffnen std::string Name; //String für gefundene Daten while(!File.eof()) //Solange das File nicht fertig ist { std::string CurrentLine; //Tempöräre Variable std::getline(File, CurrentLine); //Zeile aus Datei holen if(CurrentLine.find("Name") == 0) //Wenn der Bezeichner Name am Anfang der Zeile ist Name = CurrentLine.substr(CurrentLine.find_first_of('\"'), CurrentLine.find_last_of('\"')); //betroffener Bereich kopieren } if(Name.empty()) { //Fehler: Nichts gefunden }Hier hat
Namenoch die Anführungs- und Schlusszeichen um sich aber das sollte kein Problem sein.
-
EOutOfResources schrieb:
Meine Lösung:
std::fstream File("MyFile.txt"); //File öffnen std::string Name; //String für gefundene Daten while(!File.eof()) //Solange das File nicht fertig ist { std::string CurrentLine; //Tempöräre Variable std::getline(File, CurrentLine); //Zeile aus Datei holen if(CurrentLine.find("Name") == 0) //Wenn der Bezeichner Name am Anfang der Zeile ist Name = CurrentLine.substr(CurrentLine.find_first_of('\"'), CurrentLine.find_last_of('\"')); //betroffener Bereich kopieren } if(File.empty()) { //Fehler: Nichts gefunden }Hier hat
Namenoch die Anführungs- und Schlusszeichen um sich aber das sollte kein Problem sein.1. Seit wann hat fstream eine Funktion namens empty()?
2. Wieso überprüfst du nur auf EOF? Was ist mit anderen Fehlern die beim Einlesen auftreten können?
3. Wieso fstream? Hier würde doch ein ifstream Objekt reichen!?Lg freeG
-
fr33g schrieb:
1. Seit wann hat fstream eine Funktion namens empty()?
2. Wieso überprüfst du nur auf EOF? Was ist mit anderen Fehlern die beim Einlesen auftreten können?
3. Wieso fstream? Hier würde doch ein ifstream Objekt reichen!?1. Ups, ich wollte den
stringchecken.
2. Vielleicht sollte ich auch ggf.std::bad_allocabfangen, wer weis ob der Speicher reicht...
3. Wenn er auch etwas an der Datei ändern will, hat er es schon.
-
-zu spät gepostet-