Eingabe von Cin begrenzen



  • Gibt es eine möglichkeit die eingabe von Cin zu begrenzen das wenn man 10 Zeichen eingetippt hat es nichts mehr aufnimmt also zb sagt stopp mehr zeichen gehen nicht oder soetwas `?

    zb :

    string eing;
    cin >> eing;
    cout <<" Deine ANtwort ? : ";
    

    Deine Antwort :

    10 Spatzen fangen 10 flie (hier ist der Cursor)

    --> stopp mehr kannst du nicht eingeben !!!!

    Ist dies möglich ?



  • Cin ist dafür nicht verantwortlich. Lies du mit cin einen String ein, wird bis zum Trennzeichen ' ' eingelesen. Willst du eine ganze Zeile einlesen, musst du std::getline verwenden.
    Die Windows-Konsole ist gepuffert. Eingaben werden erst nach bestätigen mit Enter an das Programm gesendet.

    Folglich musst du dir die gewünschte Funktionalität selber zusammenbasteln (mit getchar oder sowas in die Richtung).

    Gruß
    Don06



  • das geht doch sogar mit assembler einfach, aber mit c++ geht das nicht?



  • Du kannst du nur eine bestimme Anzahl an Zeichen aus dem Stream lesen und den Rest verwerfen, aber ein C++ Stream hat keine Kontrolle darüber ob der Benutzer zusätzliche Eingaben machen kann (oder nicht).
    Wenn du das wünschst, dann muss du auf cin verzichten und betriebssystemspezifische Funktionen nutzen.



  • oder selbst was zusammenfrickeln.

    sobald man benutzereingaben während der eingabe schon prüfen und womöglich einschränken will, ist aber eigentlich schon der einsatz eines frameworks gerechtfertigt. reine konsolenfunktionalität ist halt sehr basal.



  • der befehl cin führ ja nichtmal zwangsweise dazu, dass es überhaupt einen cursor gibt.

    wenn man cin benutzt, wird vom buffer das erste passende wort, bzw Zahl, oder was auch immer (regulärer Ausdruck denke ich) eingelesen. Wenn der buffer leer ist, nur dann kommt auch eine schreibmarke.

    lies mal zwei Strings hintereinander mit cin ein. Sobald du das programm startest, gib zwei Wörter durch leerzeichen abgetrennt ein. Du wirst sehen, dass es keine zweite abfrage geben wird, es sei denn du leerst zwischendurch den buffer.

    cin ist also garnicht fähig über soetwas wie der Begrenzug der eingabe zu entscheiden, ich denke, da müsste man sich schon an den Buffer wenden.

    Aber ich denke, als Anfänger sollte man es hinnehmen und es akzeptieren, solange man noch auf der Konsole arbeitet, in einem Framework hat man dann bessere möglichkeiten. Ist besser, als seine Zeit damit zu verschwenden das so zu implementieren, nur damit diese eine kleinigkeit passt.


Anmelden zum Antworten