nummerlänge verursacht programmabsturz
-
Tach,
Ich habe versucht ein programm zu schreiben welches sich nummer name und nachname merkt, jedoch stürzt das programm ab sobald ich eine etwas längere nummer eingebe (handynummer halt):
#include <iostream> #include <string> using namespace std; int main() { char wahl; do { cout << "Wieviele Kontakte hinzufuegen?\n"; int i; cin >> i; int j; char name [20]; //ich habs zuerst mit string versucht, char nachname [20]; //siehe unten long nummer; //long müsste für eine handynummer doch for (j=0; j<i; j++) //locker reichen? { cout << "Name: \n"; cin >> name; cout << "Nachname: \n"; cin >> nachname; cout << "Nummer: \n"; cin >> nummer; } cout << "beenden? (y/n)\n"; cin >> wahl; }while (wahl = 'y'); return 0; }ich wollte statt dem array ein string benutzen aber der compiler hat den string in verbindung mit cin >> nicht angenommen

-
Ich würde alles in einem string speichern. Da eine Nummer ja ev. auch noch ein + drin hat, je nachdem, wie der User das eingeben mag. Dann kannst du die Zahlen extrahieren und halt schauen, ob da noch ein + drin war.
Das hier sollte wunderbar funktionieren:
#include <iostream> #include <string> int main () { std::string str; std::cin >> str; std::cout << str << std::endl; }
-
danke klappt soweit, nur wenn ich bei name einen doppelname eingebe überspringt er die Nachfrage nach dem nachnamen:
Name: hans-peter Nachname: Nummer:2542325weis jemand wieso?
-
Fahrstuhlmusik schrieb:
danke klappt soweit, nur wenn ich bei name einen doppelname eingebe überspringt er die Nachfrage nach dem nachnamen:
Name: hans-peter Nachname: Nummer:2542325weis jemand wieso?
Das ist weil der >> - Operator bist zu einem Whitespace einliest. Da kannst du dann getline benutzen, um die ganze Linie einzulesen.