Hi Leute,
ich arbeite mit einem MacBook und Xcode.
Ich habe einen Code geschrieben der Kundendaten in einer Datei speichern soll, die man auch wieder Aufrufen kann. Mein Problem ist, wenn ich cin zum Einlesen für z.B den Namen benutze, muss ich statt einem Leerzeichen (z.B. zwischen Nachmame und Vorname) ein Unterstrich " _ " benutzen. Deshalb habe ich dafür dann getline() benutzt. Anhand des Quelltextes und der Ausgabe in der Konsole, erkläre ich euch mein Problem.
Alles anzeigen
Starte ich das Programm bin ich im Hauptmenü :
{__Kunden Datenbank 0.1.1__}
Kunden (A)nzeigen oder (S)peicher:
Wenn ich jetzt den Punkt Speichern (also S oder s) auswähle kommt das:
>> Kundendaten Speichern <<
Kundennummer:
Name :
Man sieht ich kann schonmal die Kundennummer nicht eingeben, es wird einfach übersprungen.
Geben ich jetzt trozdem mal den Namen ein, funktioniert schonmal der rest. Das sieht dann z.B. so aus:
>> Kundendaten Speichern <<
Kundennummer:
Name : Mustermann Max
Straße HausNr. : Musterstraße 01
Plz / Ort : 0001 Musterstadt
Telefon : 0001/111111
E-Mail : max@mustermann.de
logout
[Prozess beendet]
Beim Auslesen der Datei wird dann das angezeigt:
Kundendaten
::----------------------::
Kundennummer: Mustermann
Name : Max
Straße HausNr. : Musterstraße
Plz / Ort : 01
Telefon : 0001
E-Mail : Musterstadt
logout
[Prozess beendet]
Am besten ihr Compiliert mal diesen Code. Ihr müsst aber beachten, wenn ihr mit windows arbeitet, müsst ihr im befehl: system("clear"); das "clear" mit "cls" ersetzen. Insgesamt 3 mal im Quelltext.
Nun meine Frage: Wieso funktioniert es nicht und was muss ich machen das es funktioniert?
ich arbeite mit einem MacBook und Xcode.
Ich habe einen Code geschrieben der Kundendaten in einer Datei speichern soll, die man auch wieder Aufrufen kann. Mein Problem ist, wenn ich cin zum Einlesen für z.B den Namen benutze, muss ich statt einem Leerzeichen (z.B. zwischen Nachmame und Vorname) ein Unterstrich " _ " benutzen. Deshalb habe ich dafür dann getline() benutzt. Anhand des Quelltextes und der Ausgabe in der Konsole, erkläre ich euch mein Problem.
Quellcode
- #include <iostream>
- #include <ostream>
- #include <fstream>
- #include <string>
- using namespace std;
- const char* const dataB = "kundendaten.dat";
- char soa;
- string knr, name, strhn, plzort, tel, email;
- int main()
- {
- system("clear");
- cout << "\n {__Kunden Datenbank 0.1.1__}" << endl << endl;
- cout << "Kunden (A)nzeigen oder (S)peicher: ";
- cin >> soa;
- if ((soa == 'S') || (soa == 's'))
- { system("clear");
- cout << "\n >> Kundendaten Speichern <<" << endl << endl;
- cout << "\nKundennummer: "; getline(cin,knr);
- cout << "\nName : "; getline(cin,name);
- cout << "\nStraße HausNr. : "; getline(cin,strhn);
- cout << "\nPlz / Ort : "; getline(cin,plzort);
- cout << "\n\nTelefon : "; getline(cin,tel);
- cout << "\nE-Mail : "; getline(cin,email);
- cout << endl << endl;
- { ofstream outFile(dataB);
- if (!outFile)
- { cout << "\n\nFehler beim erstellen der Datei!\n\n"; exit(1); }
- outFile << knr << " " << name << " " << " " << strhn << " " << plzort << endl;
- outFile << tel << " " << email << " " << endl;
- }
- }
- if ((soa == 'A') || (soa == 'a'))
- { system("clear");
- ifstream inFile;
- inFile.open(dataB);
- if (!inFile)
- { cout << "\n\nFehler beim lesen der Datei!\n\n"; exit(2); }
- inFile >> knr >> name >> strhn >> plzort >> tel >> email;
- inFile.close();
- cout << "\n\n Kundendaten\n::----------------------::\n";
- cout << "\n\nKundennummer: " << knr;
- cout << "\n\nName : " << name;
- cout << "\nStraße HausNr. : " << strhn;
- cout << "\nPlz / Ort : " << plzort;
- cout << "\n\nTelefon : " << tel;
- cout << "\nE-Mail : " << email << endl << endl;
- }
- return(0);
- }
Starte ich das Programm bin ich im Hauptmenü :
{__Kunden Datenbank 0.1.1__}
Kunden (A)nzeigen oder (S)peicher:
Wenn ich jetzt den Punkt Speichern (also S oder s) auswähle kommt das:
>> Kundendaten Speichern <<
Kundennummer:
Name :
Man sieht ich kann schonmal die Kundennummer nicht eingeben, es wird einfach übersprungen.
Geben ich jetzt trozdem mal den Namen ein, funktioniert schonmal der rest. Das sieht dann z.B. so aus:
>> Kundendaten Speichern <<
Kundennummer:
Name : Mustermann Max
Straße HausNr. : Musterstraße 01
Plz / Ort : 0001 Musterstadt
Telefon : 0001/111111
E-Mail : max@mustermann.de
logout
[Prozess beendet]
Beim Auslesen der Datei wird dann das angezeigt:
Kundendaten
::----------------------::
Kundennummer: Mustermann
Name : Max
Straße HausNr. : Musterstraße
Plz / Ort : 01
Telefon : 0001
E-Mail : Musterstadt
logout
[Prozess beendet]
Am besten ihr Compiliert mal diesen Code. Ihr müsst aber beachten, wenn ihr mit windows arbeitet, müsst ihr im befehl: system("clear"); das "clear" mit "cls" ersetzen. Insgesamt 3 mal im Quelltext.
Nun meine Frage: Wieso funktioniert es nicht und was muss ich machen das es funktioniert?