Input begrenzen
-
Wie kann ich die Zeichen begrenzen, die beim cin oder get eingegeben werden können?
Wie bei html: maxlenght
-
Du redest bestimmt von Windows/MFC sonst macht der Vergleich mit HTML keinen Sinn. Dann geh doch bitte auch ins richtige Forum...
-
Das kannst du mit der Methode width() der Klasse std::istream ereichen.
Es sollen Maximal 10 Zeichen eingegeben werden, dann schreibst du vor der cin Eingabe:
cin.width(11); // 11 wegen der Nullterminierung.
/edit:
Beispiel:int main() { cout << "\n Bitte maximal 10 Zeichen eingeben: "; cin.width(11); char str[20]; cin >> str; cout << "\n str: " << str << endl; return 0; }
Caipi
-
Caipi schrieb:
Das kannst du mit der Methode width() der Klasse std::istream ereichen.
Nope. width setzt die *minimale* Feldbreite.
Die Anzahl der Zeichen die man bei cin eingegeben werden können, kann man nicht begrenzen. Du kannst allerdings die Anzahl der Zeichen die du auswertest festlegen. Z.B. mit getline(buffer, maxZeichen).
-
Die Anzahl der Zeichen die man bei cin eingegeben werden können, kann man nicht begrenzen. Du kannst allerdings die Anzahl der Zeichen die du auswertest festlegen.
Mein Fehler, ich habe mich falsch ausgedrückt. Dass wollte ich sagen
Aber ansonsten müsste der von mir gepostete Code-Schnipsel doch auch in Ordnung sein, oder?
Bei mir werden wenn ich es so compiliere (g++) und ich mehr als 10 Zeichen eingebe, nur die ersten 10 ausgegeben.Kann mich darüber vielleicht jemand nochmal etwas genauer aufklären?
Caipi
-
Caipi schrieb:
@
Aber ansonsten müsste der von mir gepostete Code-Schnipsel doch auch in Ordnung sein, oder?Jup. Mein Fehler. Das von mir angesprochene Verhalten bezieht sich auf Ausgabeströme. Bei Eingabeströmen repräsentiert width in der Tat die maximale Anzahl der zu lesenden Zeichen.
-
An und für sich: Danke!
Aber gibt es wirklich keine Eingabemöglichkeit, mit der ich die maximale Anzahl der Eingabemöglichkeit festlegen kann.
Zum Beispiel PLZ: nur max 5 Zeichen! => Ich will nämlich ne Texteingabematrix erstellen! Nur bringt die längere Eingabe das Layout außer Form und dass will ich verhindern!Trotzdem schon mal danke!
-
The_Akki schrieb:
An und für sich: Danke!
Aber gibt es wirklich keine Eingabemöglichkeit, mit der ich die maximale Anzahl der Eingabemöglichkeit festlegen kann.
Zum Beispiel PLZ: nur max 5 Zeichen! => Ich will nämlich ne Texteingabematrix erstellen! Nur bringt die längere Eingabe das Layout außer Form und dass will ich verhindern!Trotzdem schon mal danke!
Jeden char einzeln lesen und nach dem 5ten nur noch return und backspace akzeptieren.
-
Gast221212 schrieb:
Jeden char einzeln lesen und nach dem 5ten nur noch return und backspace akzeptieren.
Das geht in Standard C++ nicht!
@The_Akki
Um das zu erreichen, was du willst musst du BS bzw. Compiler-spezifische Funktionen verwenden.Unter Windows z.B. kannst du getch aus <conio.h> verwenden. Welches BS und welchen Compiler verwendest du?
-
HumeSikkins schrieb:
Das geht in Standard C++ nicht!
Das soll in Standard C++ vielleicht nicht. Gehen tut's schon! Und wenn es das Problem löst, warum sollte man es dann nicht verwenden?
#include <stdio> int main () { char c; cout << "5 Zeichen eingeben"; char* input = new char[5]; for (int i1 = 0; i1 < 5; i1++) { c=getchar(); input[i1] = c; } return 0; }
Sollte immer genau 5 Zeichen einlesen und auch kompilieren!
-
Gast221212 schrieb:
HumeSikkins schrieb:
Das geht in Standard C++ nicht!
Das soll in Standard C++ vielleicht nicht. Gehen tut's schon!
Hä?
Und wenn es das Problem löst, warum sollte man es dann nicht verwenden?
Na weil das in Standard-C++ nicht geht.