Daten aus txt datei in Klasse einlesen
-
struct Person { string Identifikationsnummer; string Name; string Geburtsjahr; vector<string> Eltern; vector<string> Kinder; }p;
Ich hoffe, dass das so geht. Theoretisch kann doch alles string sein oder? Ich muss ja mit den Zahlen nicht rechnen.
das Dateiformat ist .txt
Ich war verwirrt, weil @hustbaer meinte, ich soll eine Variable vom Typ Person hinmachen und die Felder befüllen.
-
@PardiMau sagte in Daten aus txt datei in Klasse einlesen:
das Dateiformat ist .txt
Daß es sich um Text handelt ist allen Beteiligten klar. Gefragt war danach wie ein Datensatz für eine Person aufgebaut ist und ob das vorgegeben ist oder Du Dir das Format selbst aussuchen kannst.
-
@PardiMau sagte in Daten aus txt datei in Klasse einlesen:
Ich war verwirrt, weil @hustbaer meinte, ich soll eine Variable vom Typ Person hinmachen und die Felder befüllen.
Da sollst du immer noch. Versehentlich hast du mit P sogar schon eine Variable. Wie greift man nun auf die Felder eines struct zu? Steht in jedem Buch/Tutorial.
-
@PardiMau sagte in Daten aus txt datei in Klasse einlesen:
struct Person
{
string Identifikationsnummer;
string Name;
string Geburtsjahr;
vector<string> Eltern;
vector<string> Kinder;
}p;Sei dir aber bewusst, was du da machst:
struct Person { ... } p
.Ich bin persönlich kein großer Freund davon, die struct und gleich eine Variable auf einmal bekannt zu machen und würde dir auch raten, oben im Programm einmal die
struct Person { ... };
bekanntzumachen und dann unten einenstd::vector<Person> personen;
bzw einePerson p;
zu benutzen.Die Klasse
Person
soll ja auch überall im Programm (global) bekannt sein, während die Variablep
(oder wie auch immer) nur lokal gültig sein sollte.
-
@Swordfish sagte in Daten aus txt datei in Klasse einlesen:
...@DocShoe sagte in Daten aus txt datei in Klasse einlesen:
Darfst du das Dateiformat frei wählen oder ist es vorgegeben?
= ?
Dachte, dass XML oder JSON vllt ne bessere Option sind. Falls sich mal was andern sollte.
-
-
@DocShoe sagte in Daten aus txt datei in Klasse einlesen:
@Swordfish sagte in Daten aus txt datei in Klasse einlesen:
...@DocShoe sagte in Daten aus txt datei in Klasse einlesen:
Darfst du das Dateiformat frei wählen oder ist es vorgegeben?
= ?
Dachte, dass XML oder JSON vllt ne bessere Option sind. Falls sich mal was andern sollte.
Damit wäre der OP gründlich überfordert.
-
Um da eben noch Klarheit zu schaffen, es geht um einen einfachen Editor Text
-
Bevor ich aufgebe noch ein letzter Versuch.
@Swordfish sagte in Daten aus txt datei in Klasse einlesen:
Gefragt war danach wie ein Datensatz für eine Person aufgebaut ist und ob das vorgegeben ist oder Du Dir das Format selbst aussuchen kannst.
Da hast Du schonmal soetwas beschrieben:
@PardiMau sagte in Daten aus txt datei in Klasse einlesen:
Die Beispieldatei sähe so aus:
0001 Franz Müller 1996 "0004" "0005" "0019" "0020" 0002 Helga Richter 1994 "0041" "0042" "0019" "0020" 0003 Sabine Müller 1990 "0004" "0005" "8" "9" 0004 Sandra Müller 1967 "10" "11" "0001" "0003" 0005 Peter Müller 1966 "12" "13" "0001" "0003"
In der ersten Zeile einer Person steht wohl eine ID, in der zweiten der Name, und in dritten das Geburtsjahr. In der vierten Zeile Mutter und Vater? oder Vater und Mutter? Muss das in Anführungszeichen sein? In der fünften Zeile die Kinder? Muss das in Anführungszeichen sein?
-
@Swordfish
nein, die Anführungszeichen müssen nicht sein
-
@PardiMau
Die führenden Nullen auch nicht?
-
@DocShoe sagte in Daten aus txt datei in Klasse einlesen:
@PardiMau
Die führenden Nullen auch nicht?Ich glaube, diese Diskussion ist am Ziel vorbei. Das ist irgendeine ID und warum sollte die nicht ein String sein und/oder Tüddelchen haben?
Spannender ist doch, was eigentlich das Ziel von @PardiMau ist. Soll das dauerhaft im Speicher gehalten werden? Will man nur einmalig was suchen (wie wär's dann mit
grep
und den Optionen-A
und-B
oder-C
?) Oder sollen vielleicht Familienbäume erzeugt werden?Mein wesentlicher Punkt ist jedoch, dass man mit diesen IDs ja sowieso nicht rechnen will. Die können also genausogut Strings mit führenden Nullen sein.
-
@wob
Ja, möglich. Meine Überlegung war, dass OP mit dem eigentlichen Thema schon Probleme hat und sich durch Sonderfälle in seinem Dateiformat noch unnötige Probleme einhandelt. Es gibt keinen Grund, IDs vierstellig mit führender Null zu speichern.
-
@DocShoe sagte in Daten aus txt datei in Klasse einlesen:
Es gibt keinen Grund, IDs vierstellig mit führender Null zu speichern.
Doch, sicher. Wenn das aus irgendeinem anderen System eben genauso rauskommt und man daran einfach mal nichts ändern will. Vielleicht müssen die Ergebnisse später wieder zurückgespielt werden. Woher willst du dann wissen, wie viele Nullen du vorne anhängen musst? Vielleicht lassen sich ja gar nicht alle diese IDs in int wandeln? Schon gehabt, dass ein Kunde in einem Land nur int-IDs hatte und dann die Software auf ein anderes Land erweitert wurde, wo die IDs wilde Zeichenketten waren. Ich würde also respektieren, was ich da vorgesetzt bekomme, sofern nicht irgendwas dagegen spricht.
-
@wob
Ich habe aus PardiMaus Antwort "die Anführungszeichen müssen nicht sein" geschlossen, dass das Dateiformat nicht fix ist und er es ändern darf.
-
@wob sagte in Daten aus txt datei in Klasse einlesen:
Spannender ist doch, was eigentlich das Ziel von @PardiMau ist.
Ich unterstelle mal daß er C++ lernen will.
-
Ohje, da habe ich ja ein Chaos angerichtet...
Ich wollte mir nur eine Beispieldatei anlegen. Hilft es, wenn Da keine führenden Nullen sind?
Bzw. tut es was zur Sache, wenn in einem string führende Nullen sind?LG
-
@PardiMau
Bei einem String tut sich da garnix, dem ist der Inhalt Hupe. Vllt habe ich da mehr reininterpretiert als wirklich dahintersteckt. Mein erster Gedanke war: Vierstellig? Was passiert, wenn 9999 Einträge nicht mehr ausreichen? Hab da grad sowas erlebt, wo die Seriennummer dreistellig ist und jetzt Gerät 99x ausgeliefert wird.
-
Und leider kann ich mir das Format der txt nicht aussuchen...
-
@PardiMau sagte in Daten aus txt datei in Klasse einlesen:
Und leider kann ich mir das Format der txt nicht aussuchen...
Ja was denn nun? Kanst du das Datenformat frestlegen oder nicht? Die Dateiendung spielt dabei überhaupt keine Rolle.