getch - Funktion.



  • Hallo,
    ich bin absoluter Neuling!
    Probiere es gerade ein Programm (mit einer Passwortabfrage) zu schreiben.
    Funktioniert zwar soweit, aber ich möchte das man nur eine Taste drücken muss, ohne Enter zu drücken (mit der Funktion getch)

    Was mache ich falsch?

    #include <iostream>
    #include <string>
    #include <conio.h>

    using namespace std;

    int main()
    {

    string password = "h";
    string input;

    cout << "Passwort:" << endl;
    getch();
    cin >>input;

    if(!password.compare(input))
    {
    cout << "Zugriff gewaehrt.\n";
    }
    else
    {
    cout << "Zugriff verweigert.\n";
    getch();
    }
    system("Pause");

    return 0;
    }

    Vielen Dank für die Hilfe im vorraus.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Du musst das, was du mit getch einließt, auch irgendwo abspeichern:

    #include <iostream>
    #include <string>
    #include <conio.h>
    using namespace std;
    
    int main()
    {
    	string password = "h";
    	string input;
    
    	cout << "Passwort:" << endl;
    	for(char c; (c=getch())!='\n' && c!='\r'; input+=c);
    
    	if(!password.compare(input))
    	{
    		cout << "Zugriff gewaehrt.\n";
    	}
    	else
    	{
    		cout << "Zugriff verweigert.\n";
    	}
    
    	cin.get();
    	return 0;
    }
    


  • Vielen Dank, das klappt !

    Ist die getch Funktion nicht auch dafür da das kein Enter gedrückt werden muss?

    Und geht die Funktion nicht einfacher?

    for(char c; (c=getch())!='\n' && c!='\r'; input+=c);

    Ich verstehe das garnicht 😞



  • neuling?!! schrieb:

    Ist die getch Funktion nicht auch dafür da das kein Enter gedrückt werden muss?

    Bei getch musst du kein Enter drücken. Aber irgendwie musst du doch sagen, wann dein Passwort zu Ende ist. Und eine Passworteingabe bestätigst du doch normal mit Enter. Im Endeffekt kannst du doch einfach einen std::string einlesen.

    neuling?!! schrieb:

    Und geht die Funktion nicht einfacher?

    Eine Funktion? Ich sehe hier keine Funktion. Was ich sehe, ist eine for-Schleife. Der for-Schleifenkopf besteht aus 3 Anweisungen:
    1. Definition einer Variablen.
    2. Abbruchbedingung
    3. Irgendwas, was nach jedem Schleifendurchgang passieren soll.

    Was verstehst du da jetzt nicht?


Log in to reply