Einfache Aufgabe, dummes Problem: getline(cin, str);

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einfache Aufgabe, dummes Problem: getline(cin, str);

    Hallo,

    ich habe folgendes Problem: Ich lasse den Benutzer verschiedene Eigenschafften eines Objektes eingeben. Diese Eingaben sind in Methoden der Klasse des Objektes deifiniert. Aufgerufen werden diese in der Main-Klasse meiner Applikation. Zuerst soll der Benutzer einen String, dann zwei Double- und dann eine integer-Variable eingeben. Vor und nach jeder einzelnen Eingabe ist Text welcher mit cout ausgegeben wurde. Die EIngabe geschiet beim String mit getline(cin, str); und bei den anderen variablen mittels cin >> foo;

    Die Schleife in der die Methoden aufgerufen werden sieht folgendermaaßen aus:

    Quellcode

    1. // Einlesen der Eigenschafften einer Produktgruppe;
    2. int i = 1;
    3. while( i <= anzahlProjektgruppen ) {
    4. // Ausgabe des Eingabfortschritts
    5. cout << "\n\n\t\t\t### Produktgruppe " << i << " von " << anzahlProjektgruppen << " ###\n";
    6. // Wenn wir eine neue Produktgruppe anlegen möchtem müssen wir ersteinmal
    7. // in Erfahrung bringen wie diese heißen soll (zb. Taschentuch, Kugelschreiber...).
    8. aProduktgruppen[i].eingabeName();
    9. // Nun können auch Gewinn, Zeit und Mindestanzahl eingegeben werden.
    10. aProduktgruppen[i].eingabeGewinn();
    11. aProduktgruppen[i].eingabeZeit();
    12. aProduktgruppen[i].eingabeMindestanzahl();
    13. // Inkrementierung von i, damit die Schleife irgentwann endet
    14. i++;
    15. }
    Alles anzeigen


    eingabeName und eingabeGewinn so:

    Quellcode

    1. /**
    2. * Methode zur Benutzereingabe des Produktgruppennamens.
    3. */
    4. void eingabeName() {
    5. cout << "\n Wie ist der Name der neuen Produktgruppe?\n-- ";
    6. getline(cin, name);
    7. };
    8. /**
    9. * Methode zur Benutzereingabe des Gewinnes.
    10. */
    11. void eingabeGewinn() {
    12. cout << "\n Welchen Gewinn bringt ein Produkt der Produktgruppe " << name << "?\n-- ";
    13. cin >> gewinn;
    14. };
    Alles anzeigen


    Wenn ich das Programm starte habe ich aber nie die Gelegenheit dazu einen Namen einzugeben. Das Programm läuft weiter bis zur Eingabe des Gewinnes und wartet dann da auf eine Eingabe.
    Da in der Ausgabe ein \n fehlt, schätze ich das getline eben diese Leere Zeile eingelesen hat. Wie kann ich das verhindern/was mache ich falsch?

    Vielen Dank für eure Hilfe

    // EDIT: Ein cin.clear(); vor der Ausführung des getlines hilft auch nicht.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MEETyA ()