Passwortabfrage
-
Auch wenn das jetzt ein Wink mit dem Eifelturm ist aber:
In der FAQ steht schon was dazu, einfach mal durchgucken.
-
och menno...musste das denn sein? ich will doch nur einmal erster sein *in die ecke kriech und heul*
-
Naja, in der Ecke warste der erste
-
Also thx schon mal wegen der hilfe.
Leider hat mir bis jetzt ein wink mit dem Eifelturmm
nicht geholfen.
Wenn cih auf FAQ klicke habe ich 100 möglichkeiten zu suchen.
Wo muss ich suchen und wonach?Sorry. Aber der Eifelturm konnte mich bis jetzt leider nicht zum ziel bringen.
Vllt könnte einer einen befehl posten nach dem ich mal googlen kann oder?MFG Sqwan
-
Also cih ahbe es nun endlich gefunden...
war nicht im C++ bereich.
Nur gut das es google gibt...also:
#include <iostream> #include <string> #include <conio.h> std::string readPassword (char replace = '*') { std::string password; char now = '\0'; while(now != '\r') { now = getch(); // Sonderzeichen ignorieren // Bestehen aus 2 Zeichen - also nochmals getch() aufrufen // Siehe FAQ-Beitrag "Einlesen von Pfeiltasten, F-Tasten und Tastenkombinationen" if(now == 0 || now == 0xE0) { getch(); continue; } // Steuerzeichen ignorieren (Haben ASCII-Codes kleiner als 32) if(now < 32) continue; // Zeichen anhängen und Ersatzzeichen ausgeben password += now; std::cout << replace; } return password; }
Und wie verarbeitet man das?
an das passwort komme ich ja garnicht ran....
bzw ich kann nicht ausgeben oder so...
-
Du solltest dir Funktionen ansehen. Die obrige erfüllt zwei Aufgaben: ersetzt die Eingabe durch * und gibt die Eingabe zurück.
D.h. du schreibst in deine main z.B.:string pwd= readPassword();
Die Eingabe wird verschleiert, und gleichzeitig steht diese in pwd.
Standardmäßig wird die Eingabe durch * ersetzt. Wenn du die an die Funktion in anderes Argument übergibst (z.B. '#') ersetz dieses die Eingabe.
-
Soweit bin ich auch schon gewesen.
Allerdings mit char anstadt string.Trotzdem immernoch ein laufzeitfehler beim ausgeben:
void main(char password) { string pwd = readPassword(); printf("%s", pwd); }
was ist falsch?
-
Falsch ist, dass die C-Funktionen den Datentyp string nicht kennen. In C++ macht man Ausgaben mit Hilfe von Streams. Um auf die Standardausgabe zu schreiben benutzt man cout:
#include <iostream> #include <string> std::string str("Hallo"); std::cout << str;
Mit printf würde es so aber gehen, wenn du den String in einen const char* konvertierst und das macht die string-Methode c_str():
#include <string> std::string str("Hallo"); printf("%s", str.c_str());
Greetz
-
Danke. das habe ich gebraucht.
Damit ist mein problem gelöst.
Herzlichen dank an alle.Have Fun
Sqwan
-
printf("%s", pwd);
Sollte garnicht compilieren, da pwd ein UDT (std::string) ist - und vararg mit UDT isse nicht erlaubt. Der MSVC frissts dummerweise trotzdem, und nur damit man einen CString in einem printf/TRACE/... auch für ein "%s" verwenden kann. Blöder MSVC
Dadurch entstehen dann solche Fehler.