Daten speichern & auslesen
-
Hi an alle.
Habe mir die Beiträge hier komplett durchgelesen.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39469.htmlWollte das vierte Beispiel versuchen. (Datei erstellen, Daten speichern, Daten ausgeben)
Hier mal der Code
#include <iostream> #include <fstream> #include <string> int main() { using namespace std; // Einen Person-Datensatz definieren struct PERSON { string VorName; string NachName; int TelNr; }; // fstream damit die Datei zuerst schreibend und dann lesend geöffnet werden kann. fstream File("Person.txt", ios::out|ios::binary); File.open("Person.txt", ios::out|ios::binary); if (File.is_open()) { // Nur zwei Datensätze schreiben. - Hier wäre eine Fehlerprüfung angebracht for (int i = 0; i < 2 ; ++i) { PERSON Pers; while (File.read((char*)&Pers, sizeof(Pers))) { cout << "Daten werden aufgerufen..." << endl; getchar(); cout << Pers.VorName << " " << Pers.NachName << " " << Pers.TelNr << endl; getchar(); } } File.close(); // Datei schließen } return 0; getchar(); }Beim ersten Durchgang werden die Daten gespeichert. Also man muss VorName, NachName und TelNr ausfüllen. Später werden sie in die Datei Person.txt gespeichert.
Aber ich kann die gespeicherten Daten nicht auslesen.
Hier mein Code dazu:#include <iostream> #include <fstream> #include <string> int main() { using namespace std; struct PERSON { string VorName; string NachName; int TelNr; }; fstream File("Person.txt", ios::out|ios::binary); File.open("Person.txt", ios::out|ios::binary); if (File.is_open()) { for (int i = 0; i < 2 ; ++i) { PERSON Pers; while (File.read((char*)&Pers, sizeof(Pers))) { cout << "Daten werden aufgerufen..." << endl; getchar(); cout << Pers.VorName << " " << Pers.NachName << " " << Pers.TelNr << endl; getchar(); } } File.close(); } return 0; getchar(); }Ich will die Daten auslesen können. Bring die Sache aber alleine nicht hin. Also bitte hilft mir mal.

Danke im Voraus.
MfG
Technology
-
Hast du dir den Code, den du gepostet hast eigentlich auch mal angesehen?
In keinem der beiden Fälle schreibst du was (auch wenn die Kommentare im ersten Code dies behauptet: "// Nur zwei Datensätze schreiben. - Hier wäre eine Fehlerprüfung angebracht"), und trotzdem öffnest du in beiden Fällen die Datei zum Schreiben (ios::out).
Versuchs doch mal beim zweiten Beispiel, wo du lesen willst, mit ios::in.
-
Ja, hab mir den Code öfterst angeschaut aber habe so etwas zum erstenmal versucht.
Aber danke, jetzt hats geklappt. Danke

Zwei Fragen hätte ich noch dazu:
1. Die Ausgabe ist so:Markus Steinbacher 00491601707050Die Formatierung ist leider nicht wirklich übersichtlich. Könnte ich diesen Text irgendwie schöner formatieren?
**2.**Telefonnummer:
Wenn ich die Telefonnummer 00491601707050 eingebe bekomme ich dann so eine Ausgabe:Vorname: Nachname: TelNr: Markus Steinbacher 2147483647 Markus Steinbacher 4223172Reicht INT dazu nicht aus? Ein anderer Datentyp vielleicht für diese TelNummern?
Ich danke mal im Voraus
MfG
Technology
-
Für Telefonnummern ist int sowieso nicht die richtige Wahl (erstens ist es womöglich nicht groß genug, zweitens unterstützt es keine führenden Nullen und Vorwahl-Abtrennungen und drittens willst du mit Telefonnummern nicht rechnen ;)). Pack die Tel. lieber in einen String und teste selber, ob da kein "falsches" Zeichen dazwischengerutscht ist.