Adressbuch schreiben in Verbund und Methode
-
Hallo liebe Gemeinde,
ich bin in C++ ein Neuling und muss im Sinne eines Miniprojektes ein Adressbuch mit C++ schreiben.
Dieses Programm soll können:
- Nach Vor-, Nachnamen und Telefonnummer fragen
- Dieses in eine csv-Datei schreiben
- Aus der Datei auslesen und ausgebenSoviel erstmal zum Hintergrundwissen. Ich habe nun Probleme die Daten auszulesen und diese auszugeben. Vielleicht könnt Ihr mir den nötigen Hinweis geben woran es liegt. Ich komme einfach nicht durch googlen oder sonstiges dahinter was es sein könnte.
Anscheinend habe ich hier Probleme mit meinen Arrays, die ich zum erstellen meiner einzelnen Adresszeilen verwende (fett markiert).
Ich hoffe ihr könnt mir helfen.Gruß
ZenkoHier mein Programm-Code:
#include "stdafx.h" #include <iostream> #include <string> #include <fstream> using namespace std; struct Adress { string n; string v; string t; void init(); string ausgeben(); void schreiben(ofstream &tabelle); void lesen(ifstream &tabelle); }; string Adress::ausgeben() { string ausgabe = n + " " + v + " " + t; return ausgabe; } void Adress::init() { cout << "Name:" << endl; cin >> n; cout << "Vorname:" << endl; cin >> v; cout << "Telefonnummer:" << endl; cin >> t; } void Adress::schreiben(ofstream &tabelle) { tabelle << n + ";" + v + ";" + t << endl; } void Adress::lesen(ifstream &tabelle) { getline(tabelle, n, ';'); getline(tabelle, v, ';'); getline(tabelle, t, '\n'); } int _tmain(int argc, _TCHAR* argv[]) { int adressenzaehler = 0; Adress adressen[20]; //Schreiben in Datei //VON ofstream tabelle; tabelle.open("lesen.csv"); cout << "Wie viele Adressen sollen angelegt werden? Maximal 20" << endl; cin >> adressenzaehler; for (int i = 0; i < adressenzaehler; i++) { adressen[i].init(); adressen[i].schreiben(tabelle); tabelle.close(); //BIS //lesen //VON ifstream csvread("lesen.csv"); if (!csvread.is_open()) cerr << "Fehler beim Oeffnen der Datei!" << endl; else { ; // tue was mit 'person' cout << person.n << endl; cout << person.v << endl; cout << person.t << endl; getchar(); } system("pause"); return 0; }
-
Bitte editier Deinen Beitrag nochmal und entfern die Tags für die fette-Schrift im Quelltext. Dann funktionieren auch die code-Tags.
Du brauchst doch noch eine Instanz der Klasse Adress, in die Du einliest, und die Du ausgibst. Hier z.B. Z. 7ff.
//lesen //VON ifstream csvread("lesen.csv"); if (!csvread.is_open()) cerr << "Fehler beim Oeffnen der Datei!" << endl; else { Adress person; for(int i=0; i<adressenzaehler; ++i){ person.lesen(csvread); std::cout << person.ausgeben() << '\n'; } }
-
Achso, ja stimmt. Danke für den Hinweis. Jetzt klappt's auch
Danke
-
Wie wärs mit operator overloading für lesen/schreiben?