Ich habe eine Datenbankklasse, die ein Array ist, das eine Anzahl von Objekten enthält. Die Funktion wird ein paar Eingaben vom Benutzer nimmt dieWie bekomme ich Benutzereingaben für eine Zeichenfolge und dann ein int?
Zum Beispiel der beiden Strings und ints sind:
std::cout << "Enter first name: ";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::getline(std::cin, first_name);
std::cout << "Enter last name: ";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::getline(std::cin, last_name);
std::cout << "Enter age: ";
std::cin >> age;
Wenn ich den Code ausführen, nachdem ich den Nachnamen nach der Eingabe der Eingabetaste drücken, es ist einfach startet eine neue Zeile und ich muss eine andere Eingabe eingeben, bevor die Eingabe des Alters angefordert wird.
Ich habe gehört, dass es schlecht war, getline und cin zu mischen, und dass es besser ist, das eine oder das andere zu verwenden. Was kann ich tun, damit dies funktioniert und was wäre eine gute Vorgehensweise?
Edit: Ich fügte die Ignores hinzu, als ich anfänglich nach Lösungen suchte, denn ohne sie würde der Code nicht auf Benutzereingaben warten. Die Ausgabe wäre "Geben Sie den Vornamen ein: Geben Sie den Nachnamen ein:"
Edit2: BEHOBEN. Problem war, dass ich "cin >>" früher in meinem Code für Benutzer verwendet hatte, um eine int-Variable einzugeben, und die erste cin.ignore-Anweisung benötigte, aber nicht die andere. Ich habe diesen Teil des Codes nicht mit einbezogen, weil ich nicht wusste, dass das Auswirkungen auf den Code hatte. Immer noch neu für all das, also danke allen für ihre Hilfe!
Entfernen Sie die 'ignore' Zeilen, weil' std :: getline() 'Sie bereits zur nächsten Zeile bewegt. – Galik
Es ist schlecht, nicht zu wissen, was du tust. Was ist mit den 'ignorieren'? – LogicStuff
Aus Neugier, warum ignorierst du den Input vor der "getline"? Es sieht so aus, als ob Sie den Benutzer zwingen, eine Leerzeile einzugeben, bevor das Programm die Daten eingibt. –