Cin-Eingabe abbrechen



  • Hallo Leute ich möchte ein C++ Programm schreiben in dem ich sowas wie eine
    Befehlszeile habe und möchte das wenn ich Enter drücke eine neue Befehlszeile kommt.

    Hier mal ein hypothetischer Code

    #include <iostream>
    #include <stdio.h>
    #include <conio.h>
    
    using namespace std;
    
    char eingabe[255];
    
    int main()
    {
      marke:
      cout << "Befehl @ ";
      cin >> eingabe;
    
      swtich (eingabe[0])
      {
        case 'a': 
          cout << "BLA\n";
          break;
        case 'b':
          cout << "BLA BLA\n";
          break;
        default:
          cout << "Autsch! Falscher Befehl!\n"
          goto marke;  
      }
    
      return 0; 
    }
    

    So wenn ich jetzt bei der Eingabe bin und nichts eingebe, sondern Enter drücke passiert nichts. Ich will sozusagen ,das das Programm wenn ich nichts eingebe auf marke zurück hüpft. 😕

    Ich hoffe ihr könnt mir Lösungsvorschläge geben.

    Vielen Dank im Vorraus 🙂



  • der Eingabe-Operator wartet solange, bis er etwas verwertbares vor die Nase gesetzt bekommt - und überliest dabei Whitespaces. Wenn du wirklich jede Eingabezeile in die Hand bekommen willst, solltest du dir mal getline() ansehen.

    PS: Und tu dir selber einen Gefallen und verwende (a) std::string für Zeichenketten und (b) Schleifen (while) anstelle von goto-Gehüpfe.



  • jo danke

    ich schau mir getline() mal an

    PS.: mit dem while statt goto hast du recht is veraltet 😃




Log in to reply