[C/C++] Tastatureingabe scannen?

Radhad

Erfahrenes Mitglied
Hallo zusammen,

wir haben ein neues projekt in der Schule bekommen, es handelt sich um ein Postverwaltungssystem in C++ mit Konsole. Wir sollen eine Methode schreiben, die bei der Eingabe der Adresse überprüft, ob nur die Return-Taste gedrückt wird, und dann ein false zurückliefern. Ich weiß, dass ich nach der Eingabe einfach den String vergleichen kann ob er leer ist. Das soll auch bei der Methode isValid() gemacht werden, ob die Adresse gültig ist und nirgendswo leer ^^. ich suche also den Befehl, der den Event der Return-Taste als erstes Zeichen abfängt und ein false zurück gibt. Kann mir da jemand weiterhelfen?


MfG Radhad
 
Mit was liest du denn ein?

Sollte es isstream.getline(...) oder so sein, kannst du ja einfach überprüfen, ob das erste Byte bereits '\0' ist, genauso bei allen anderen ganzzeiligen Einlese-Verfahren, die '\0' anhängen (oder falls sie '\r' anhängen, kannst du ja auf das überprüfen).

Falls du selber eine Eingabe geschrieben hast, zB mit _fgetchar oder _getch, sollte es ja sowieso kein Problem sein, in dem Fall solltest du deine Frage nicht beantwortet bekommen, sondern ein bis zwei Sekunden selber denken. (gilt auch erst recht für ersten Fall, aber ich will ja mal nicht so sein....)

Ansonsten, falls du keins der beiden machst, kann ich dir nur raten, benutz Methode 1.
 
Das Problem ist, ich kenn den Befehl nicht. Soetwas haben wir noch nie gemacht und unser Lehrer denkt wir können das. Fragen beantwortet er nicht. Da liegt ja das Problem an der ganzen Sache. Ich kenn nur zur Eingabe eines Strings cin, aber da kann ich ja nur nach der Eingabe den String "scannen", ob er "\0" ist oder nicht.


MfG Radhad
 
Mir ist aufgefallen, dass ich deine Frage beim ersten Mal nicht richtig durchgelesen habe. Jetzt verstehe ich sie allerdings nicht mehr *g*.
Denn du weisst ja, wie du überprüfen kannst, ob das erste Zeichen ein Enter war...
Hä?
 
Du meinst also ungefähr so
Code:
bool ReadFromStdin()
{
 while(getchar() != 10) //Bei Enter abbrechen und false zurückgeben
 {
 }
 return false;
}

Zur Erklärung: int getchar() gibt dir den ASCII(oder wars UNICODE)-Code für die entsprechende Taste zurück.
Sollte dieser Wert 0xA(also 10) sein, wars die Enter-Taste.
Falls es dir nur darum geht, ob der ERSTE Tastenanschlag ein Enter war, reicht natürlich auch ein einfaches if():
Code:
if(getchar() == 10)
 return false;
else
{
//an eingabestring angängen
}
 
Anhängen geht mit

Code:
string p_Name .= getchar()

oder wie muss ich das umsetzen?
Habe das vorher noch nie gemacht ^^
Nach dem ersten Zeichen wird ja der String weiter eingegeben. Ich denke das geht so nicht wie es da oben steht.


MfG Radhad
 
Zuletzt bearbeitet:
Also meines Wissens wartet jede einlese Funktion die von stdin liest solange bis
mindestens ein Zeichen eingelesen wurde, wenn man als erstes die Entertaste drückt
machen die Funktionen nix weiter als stdin ein '\n' weiterzurücken, aber deswegen
kehren sie nboch lange nicht zum Programm wieder zurück. =>
Man ist sozusagen gezwungen etwas einzugeben. Du kannst höchstens überprüfen
ob lauter Leerzeichen enthalten sind oder ungültige Buchstaben

Selbst C Coders Code [
while(getchar() != 10)
bricht die Eingabe nicht
ab, wenn als erstes bzw nur '\n' s eingelesen werden.

In diesem Sinne

Gruß

RedWing
 
getchar liest genau ein Zeichen aus dem Inputbuffer, egal ob es ein Newline ist.
(jedenfalls wenn es das gleiche wie _getch macht, was ich annehme)
 
Zurück