Hi an alle,
ich bin gerade am rumprobieren mit C++ Funktionen usw. und habe mal versucht eine Datenbank zu erstellen.
Sie funktioniert soweit das ich die eingegebenen Kunden speichern kann in eine TXT Datei.
Diese möchte ich nun beim nächsten Programmstart wieder einlesen und in die gleichen Variablen speichern wie sie am anfang waren.
Da gibt es einmal die:
Kunden ID
Kunden Vorname
Kunden Nachname
Diese speichert er folgendermaßen in die TXT Datei:
1 // ID
Hans // Vorname
Wurst // Nachname
1Ende // Punkt an dem er aufhören soll einzulesen
2 // Entweder soll er hier wieder anfangen einzulesen oder ich würde noch ein 2Anfang generieren.
Peter //Vorname
Baum // Nachname
2Ende // Wieder das Ende
Nun bin ich auf der Suche wie er die Daten einliesst und bei den bestimmten Punkten aufhört einzulesen und ab einem bestimmten Punkt wieder anfängt.
Im Moment sieht es bei mir so aus
das '[t]Ende' gibt ja so wie ich es erfahren habe an das er dort aufhört einzulesen. Stimmt dies ? Und wie lege ich fest ab wo er beim starten der nächsten Schleife wieder anfängt mit dem einlesen ?Code:for(t=1;t<=50;t++) { ifstream in ("Daten.txt"); in >> Kundenfeld[t].nr >> Kundenfeld[t].KundeVorname >> Kundenfeld[t].KundeNachname,'[t]Ende'; }
Danke euch
Mfg
-
26.04.2012, 13:53 #1Ensign
- Dabei seit
- Sep 2011
- Beiträge
- 140
[C++] ifstream Daten einlesen in Variable
- Anzeige
Logge dich ein, um diese Anzeige nicht zu sehen. -
26.04.2012, 14:59 #2Cadet 2nd Year
- Dabei seit
- Apr 2012
- Beiträge
- 21
[C++] AW: ifstream Daten einlesen in Variable
du musst das über eine struct machen:
struct anlegen:
Code:struct KundenDaten { string vorname; string nachname; }
dann struct array anlegen:
Code:KundenDaten Datensatz1[50];
ggf. struct leeren oder mit hex "00" bytes befüllen. (schreib ich hier jetzt mal nicht auf ... machst halt das string objekt leer indem du per memcpy die volle länge mit hex 00000 füllst)
dann struct mit kundendaten befüllen:
Code:getline(cin,Datensatz1::vorname[0]); getline(cin,Datensatz1::nachname[0]); getline(cin,Datensatz1::vorname[1]); getline(cin,Datensatz1::nachname[1]);
oder per datei:
dann struct schreiben geht vom grunde her wie lesen nur ich würde es für die datensätze mit ios::app machen .... an deiner stelle würde ich (falls du c++ neuling bist) erstmal grundlagen leernen, sonst kommst du nicht wirklich weit.Code:ifstream input_file("datei.txt", ios::binary); input_file.read((char*)&Datensatz1, sizeof(Datensatz1)); input_file.close();
oder versuch autoit ... das geht da alles wesentlich leichter und ohne umstände. ich persönlich schreibe nur dlls in c++ und binde sie dann in scriptsprachen ein.
Edit: kleine Korrektur
Geändert von WhiteLionATX (26.04.2012 um 15:19 Uhr)
-
26.04.2012, 19:06 #3Ensign
Ersteller dieses Themas
- Dabei seit
- Sep 2011
- Beiträge
- 140
[C++] AW: ifstream Daten einlesen in Variable
Danke dir für die Hilfe. Heute keine Zeit mehr das umzusetzen aber bei Fragen melde ich mich am Wochenende. Danke dir
-
26.04.2012, 20:32 #4
-
26.04.2012, 21:06 #5Cadet 2nd Year
- Dabei seit
- Apr 2012
- Beiträge
- 21
[C++] AW: ifstream Daten einlesen in Variable
also beim string objekt gebe ich dir recht, aber z.B beim char array ? was machst du denn da ?
mal angenommen du möchtest z.B. mit hex werte arbeiten also z.B. bytes vergleichen ...inklusive aller (also auch x\0) bytes ... wie stellst du das an ? - also ich plätte das array in voller länge durch memcpy und mach dann memcmp ....und du ? wann gibt es dabei undefinierbares verhalten (sofern man die länge berücksichtigt) ?
...okey du könntest jetzt sagen: wenn du die länge kennst, dann brauchst du es nicht ... das stimmt, aber wenn ich dann doch mal nur einen cstring habe, was spricht dagegen ?Geändert von WhiteLionATX (26.04.2012 um 21:10 Uhr)
-
26.04.2012, 21:12 #6
[C++] AW: ifstream Daten einlesen in Variable
Ich sprach von Klasseninstanzen, nicht von character-arrays. Google mal nach "C++ PODs". Alles was nicht in diese Kategorie fällt, solltest du auf KEINEN Fall mit memset() oder memcpy() beschreiben.

Zitieren
