PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++:Wie begrenzt man beim Einlesen eines Strings mit cin auch die Breite der Ausgabe?


Gast
2007-12-10, 18:46:15
Ich will einen String einlesen, der maximal 2 Zeichen breit sein soll.

Soviel habe ich dazu schon rausgefunden:

string s;
cin >> setw(2) >> s; // Eingabe
cin.sync; // leert Puffer für nächste Eingabe
cin.clear;


Damit können also in s maximal 2 Zeichen gespeichert werden.

Das Problem das ich bei dieser Methode nur habe,
ist das es optisch für den Benutzer nicht eingeschränkt ist.

D.h. es werden zwar nur 2 Zeichen an den String übergeben,
aber der Benutzer kann dennoch mehr als 2 Zeichen mit der Tastatur eingeben und das sieht er dann auch auf dem Bildschirm.
Das will ich eigentlich verhindern.

Auf dem Bildschirm sollten nicht mehr als 2 eingegebene Zeichen angezeigt werden.
D.h. wenn ich z.B.

AB

eingegeben habe, und noch C eingeben will, dann sollte
der Cursor nicht weiterspringen und C anzeigen sondern, bei B bzw. nach B stehen bleiben und auch kein C anzeigen.

Wie macht man das?

Auch will ich eigentlich nur bestimmte Zeichen zulassen,
in diesem Fall alle zahlen von 0..9 und A..F bzw. a..f.

Die Eingabe von anderen Zeichen sollte ebenfalls nicht möglich sein
und auch nicht angezeigt werden.

D.h. wenn der Benutzer X anstatt F eingibt, dann sollte am Bildschirm nichts
passieren und auch kein X angezeigt werden.

Trap
2007-12-10, 19:42:01
Wie macht man das?
Hängt vom Betriebssystem ab. Unter Windows wäre "conio.h" der passende Suchbegriff.

Der Normalfall ist, dass das Betriebssystem die Steuerung über die Eingabeinteraktion hat und nur ab und zu die Daten an die Anwendung weitergibt. Wenn man das nicht möchte muss man betriebssystemabhängige Sachen machen.

Gast
2007-12-10, 19:56:41
Ok, thx.

Habe schon was gefunden.