cin.get() --> Eingabe wiederholen bis #



  • Hallo zusammen,
    brauche dringend Hilfe zum folgenden Problem:

    ich muss verschiedene Daten vom Benutzer einlesen, solange er nicht ein bestimmtes Zeichen eingibt in diesem Fall '#'. ich habe etwas versucht aber er funkt nicht wie ich das haben möchte!

    while( cin.get() != '#') {
          cout << "Name: ";
          cin >> name;
          cout << "Reihe: ";
          cin >> row;
          cout << "Sitzplatz: ";
          cin >> letter;
    
          Seat seat1( row, letter, name );
    
       }
    

    So soll das aussehen im Fenster!

    Name(# zum Beenden): Hans
    Reihe: 8
    Sitzplatz: D
    Name(# zum Beenden): Anton
    Reihe: 1
    Sitzplatz: F
    Name(# zum Beenden): Dieter
    Reihe: 8
    Sitzplatz: C
    Name(# zum Beenden): #



  • cout << "So soll das aussehen im Fenster!\n\n";
    std::string name, row, letter;
    do
    {
    	cout << "\nName(# zum Beenden): ";
    	cin >> name;
    	if (name != "#")
    	{
    		cout << "\nReihe: ";
    		cin >> row;
    
    		cout << "\nSitzplatz: ";
    		cin >> letter;
    		Seat seat1(row, letter, name);
    	}
    } while(name != "#");
    

    Gruss
    Cartman



  • danke Cartman,
    das hat funktioniert. hatte es mittlerweile mit system("Pause") versucht!
    vielen dank - nachhinein scheint das ja richtig einfach aus!

    und nochwas........ cool signature



  • aetbaar_444 schrieb:

    danke Cartman,
    das hat funktioniert. hatte es mittlerweile mit system("Pause") versucht!
    vielen dank - nachhinein scheint das ja richtig einfach aus!

    Kein Problem 🙂
    Die Loesung ist meistens (fast immer) einfacher als man glaubt.
    Aber wie kommt man denn auf system("pause")?
    Aber trotzdem was dazu: Versuche system-Befehle zu vermeiden, da diese sehr langsam sind. Ausserdem gibt es unter C++ immer eine bessere Alternativen. das system("pause") koennte man z.B. so realisieren (ist dann aber genau wie system("pause") auch plattformabhaengig):

    oben

    #include <conio.h>
    

    weiter unten

    cout << "Beliebige Taste druecken, um fortzufahren...";
    _getch();   // die Funktion wartet, bis irgendeine Taste auf der Tastatur
                // eingegeben wurde - das ganze ohne echo wie bei "pause"
    

    und nochwas........ cool signature

    Danke

    Gruss
    Cartman



  • ... und _getch(); ist natürlich schönes Standard-C++ ... 🙄

    cheers, Swordfish



  • danke für den hinweis ( system....)
    super forum - absolut kompetent.

    mfg

    aetbaar_444



  • Swordfish schrieb:

    ... und _getch(); ist natürlich schönes Standard-C++ ... 🙄

    cheers, Swordfish

    Bitte zuerst lesen, bevor man so einen (unnoetigen) Kommentar ablaesst. Ich habe in meinem Beitrag erwaehnt, dass es plattformabhaengig ist (wie auch system("pause")).

    Gruss
    Cartman


  • Administrator

    Eric Cartman schrieb:

    Bitte zuerst lesen, bevor man so einen (unnoetigen) Kommentar ablaesst. Ich habe in meinem Beitrag erwaehnt, dass es plattformabhaengig ist (wie auch system("pause")).

    Du hast aber auch das folgende geschrieben:

    Eric Cartman schrieb:

    Ausserdem gibt es unter C++ immer eine bessere Alternativen.

    Wieso gibst du dann nicht gleich eine richtige C++ Lösung an? conio.h ist höchstens eine C Lösung, aber auch in C kein Standard. Am besten wäre aber auch einfach dieser Link gewesen, der erledigt die ganze Arbeit:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html

    🙂

    Grüssli



  • Dravere schrieb:

    Eric Cartman schrieb:

    Bitte zuerst lesen, bevor man so einen (unnoetigen) Kommentar ablaesst. Ich habe in meinem Beitrag erwaehnt, dass es plattformabhaengig ist (wie auch system("pause")).

    Du hast aber auch das folgende geschrieben:

    Eric Cartman schrieb:

    Ausserdem gibt es unter C++ immer eine bessere Alternativen.

    Wieso gibst du dann nicht gleich eine richtige C++ Lösung an? conio.h ist höchstens eine C Lösung, aber auch in C kein Standard. Am besten wäre aber auch einfach dieser Link gewesen, der erledigt die ganze Arbeit:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html

    🙂

    Grüssli

    Touché.



  • Danke Davere. 😉

    cheers, Swordfish

    PS: Eine Möglichkeit, auf einen beliebigen Tastendruck zu warten gibt's in C++ sowieso nicht.



  • - Mit Mitteln der Standardbibliothek ist es nicht möglich auf einen *beliebigen* Tastendruck zu warten

    Genau deswegen habe ich _getch vorgeschlagen, um den Dos-pause-Befehl perfekt zu imitieren, denn bei cin.get() wird noch auf ein ENTER gewartet und eben nicht auf eine beliebige Taste.

    Aber der Link ist gut 🙂

    Gruss
    Cartman


Anmelden zum Antworten