Wie lese ich am besten aus dieser Datei ein ?!?!
-
Hallo,
meine Eingabedatei sieht wie folgt aus :
Otto1957 Willi1924 Erna1934
Sven1933 unbekannt Kunigunde19071.Stelle : Name des Kindes und Geburtsatum
2.Stelle : Name des Vaters und Geburtsdatum
3.Stelle : Name der Mutter und Geburtsdatum
unbekannt : halt unbekanntmeine Abfrage wäre wie folgt :
KVM::KVM(istringstream &istrstr_Zeile) { char c; string name=""; short zahl; short i = 0; while(istrstr_Zeile.eof()==false) { istrstr_Zeile >> c; while(isalpha(c)) { name+=c; istrstr_Zeile >> c; } istrstr_Zeile.putback(c); istrstr_Zeile >> zahl; switch(i) { case 0 : { Kind.SetName(name); name=""; Kind.SetGebDat(zahl); } break; case 1: { Vater.SetName(name); name=""; Vater.SetGebDat(zahl); } break; case 2: { Mutter.SetName(name); name=""; Mutter.SetGebDat(zahl); } break; } i++; } }
doch mit dem "unbekannt" habe ich ein Problem, was wäre denn eine Programmiertechnisch intelligente Lösung ?
-
folgender tipp: lese eine zeile (bis \n) als string ein, dann parsen; z.b. einzelne Strings aufteilen nach Leerzeichen (oder anderes Trennzeichen wenn du hast), danach hast du 4 Teilstrings; die letzten 4 zeichen eines jeden Teilstrings repräsentieren die jahrzahl,
dann kannst du auch leicht auf "unbekannt" prüfen oder feststellen, ob du einen ungültigen Datensatz hast o.ä.
-
und mit welcher Methode kann ich das machen ?
-
http://www.msoe.edu/eecs/ce/courseinfo/stl/string.htm
Zeile vom Input-Stream lesen: .getline()
zerlegen: z.b. mit find() die leerzeichen rausfiltern -> Startindizes -> Umkopieren in Einzelstrings (z.b: mit substr())
Jahrzahlen rausfiltern: über Indizes (4 Stellig), nach int casten (Exceptions abfangen nicht vergessen), mit z.b. erase die jahrzahlen wegschneiden usw...