Passwortabfrage ;/

02/12/2015 21:01 Coder~Nick#1
Ich habe mich etwas weiter versucht und wollte eine Art Passwortabfrage erstellen jetzt habe ich einen Fehler bei dem ich einfach nicht weiterkomme :(

Code:
#include <iostream>// Brauche ich für die Ein UND AUSgabe am Desktop
#include <conio.h>// Brauche ich für einzelne Zeichen... !
#include <string>//Steht dafür um ganze Wörter lesen zu können ! Merks dir endlich :D
#include <Windows.h>// Ist diese Beep funktion in meinem Fall zweifach "Beep" "Beep"

using namespace std;
bool Passwortabfrage(string);
int main(void)

{
    for ( int i = 0; i <= 2; i++){
	cout << "\n Bitte Passwort eingeben: ";
	if (Passwortabfrage("epvps hallo")) {
	cout << "\n Passwort wurde akzeptiert ";
	break;
	} 
	
	else 
	{
		Beep(500, 50);
		Beep(500, 50);
		cout << "Passwort nicht akzeptiert \n";
	}
	}
	cin.sync();
	cin.get();
}
	bool Passwortabfrage(string richtigesPasswort)
	{
		char Zeichen1;
		string ganzesPasswort;
		Zeichen1 = _getch();

	while ( Zeichen1 != 0x0D ) // Solange das eingegeben zeichen kein enter ist
	{
		if (Zeichen1 != 0x08)
		{ 
			ganzesPasswort += Zeichen1;
			_putch('*'); 
		}
		
		else if (Zeichen1 == 0x0D && ganzesPasswort.length() > 0 ) 
		{
			ganzesPasswort.resize(ganzesPasswort.length() - 1);

		_putch(0x08);
		_putch("");
		_putch(0x08);
		}
		Zeichen1 = getch();
		}

	if (ganzesPasswort == richtigesPasswort)
	{
		return true;// Passwort und Eingabe isnd Identisch
	}
	else
	{
		return false;
	}
	}
Fehler ist --> 1>Projektmappe.cpp(47): error C2664: '_putch': Konvertierung des Parameters 1 von 'const char [1]' in 'int' nicht möglich

ich weis nicht nach was ich suchen soll da ich den fehler net verstehe ... es deutet ja darauf hin das etwas mit den Falgs nicht simmt (laut zeilenangabe)

Lg Nick
02/12/2015 21:25 Zunft#2
Lerne immo zwar C++, bin aber trotzdem kein Experte:

Code:
_putch("");
Die " indizieren normalerweise einen String, du willst aber einen char übergeben, also solltest du entweder ' verwenden also:

Code:
_putch('');
oder 0x0 also:

Code:
_putch(0x0);
02/13/2015 14:58 +Yazzn#3
Warum so kompliziert?

Code:
#include <iostream>

int main()
{
	std::cout << "Passwort eingeben: ";
	std::string password;
	std::string correct_password = "hallo elitepvpers";
	for(std::getline(std::cin, password);
		password != correct_password;
		std::getline(std::cin, password)) {
		std::cout << std::endl <<
			"Falsches Passwort." << std::endl <<
			"Passwort eingeben: ";
	}
	std::cout << "Korrektes Passwort." << std::endl;
}
02/14/2015 14:08 Computerfreek#4
Quote:
Originally Posted by Peter File View Post
Warum so kompliziert?

Code:
#include <iostream>

int main()
{
	std::cout << "Passwort eingeben: ";
	std::string password;
	std::string correct_password = "hallo elitepvpers";
	for(std::getline(std::cin, password);
		password != correct_password;
		std::getline(std::cin, password)) {
		std::cout << std::endl <<
			"Falsches Passwort." << std::endl <<
			"Passwort eingeben: ";
	}
	std::cout << "Korrektes Passwort." << std::endl;
}
Seltsame for-schleife.
Was spricht gegen eine do-while?
Code:
std::string password;
const std::string correct_password = "myPass";
do
{
    std::cout << "Passwort eingeben: ";
    std::getline(std::cin, password);
} while(password != correct_password);
std::cout << "Password akzeptiert." << std::endl;
02/14/2015 18:10 warfley#5
Quote:
Originally Posted by Computerfreek View Post
Seltsame for-schleife.
Was spricht gegen eine do-while?
Code:
std::string password;
const std::string correct_password = "myPass";
do
{
    std::cout << "Passwort eingeben: ";
    std::getline(std::cin, password);
} while(password != correct_password);
std::cout << "Password akzeptiert." << std::endl;
Die fortschleife gibt noch aus wenn das Passwort falsch ist mit einer fußzeiligen schleife wird das komplizierter
02/14/2015 19:23 +Yazzn#6
Code:
for (init_statement; condition; iteration_expression) statement;
ist äquivalent zu:

Code:
{
	init_statement
	while (condition) {
		statement
		iteration_expression;
	}
}
Meine for-Schleife kann man also auch ganz einfach so in eine while-Schleife umschreiben:
Code:
std::getline(std::cin, password);

while (password != correct_password) {
	std::cout << std::endl <<
		"Falsches Passwort." << std::endl <<
		"Passwort eingeben: ";
	std::getline(std::cin, password);
}
02/17/2015 13:54 Coder~Nick#7
Okey super hatt geklappt, der Fehler lag eindeutig darin dass die " einen String indizieren aber ich möchte ja einen Char übergeben und das geht einfach nur mit ' . Danke euch :)