c++ läsa lösenord från fil.

Permalänk
Medlem

c++ läsa lösenord från fil.

Igår natt så satt jag och försökte lära mig hur man läser och skriver till filer via c++. Och nu vill jag använda detta i en sak jag håller på med där användaren skriver in sitt lösenord och då skall programmet se ifall det lösenordet finns i password.txt, om det finns kommer han in om inte så nekas åtkomsten. Men det vill inte funka för mig och jag har klurat och testat olika saker ett tag nu. Så ni undrar jag vad är felet? När jag kompilerar det så får jag en error: " no match for 'operator >> in 'pass >> password'

Inloggning:

void Login() { int userID; char password[20]; char Rpassword[20]; system("CLS"); cout << "UserID: "; cin >> userID; cout << "Password: "; cin >> password; ofstream pass; pass.open("Password.txt"); if (!pass.is_open()) { cout << "Couldnt open password.txt"; exit(EXIT_FAILURE); } pass >> password; if (password == Rpassword) { BankMenu(); } else { system("CLS"); cout << "Wrong password."; Sleep(2000); Login(); } }

Dold text

Registrering:

void Register() { char password [20]; ofstream myfile; myfile.open("UserID.txt"); cout << "Your UserID is 940419" << endl; cout << "Please choose a password." << endl; cin >> password; myfile << password; myfile.close(); cout << "Thanks for registering. You may now login."; Sleep(2000); Login(); }

Dold text
Permalänk
Hedersmedlem

Observera att o i ofstream innebär utmatning. Du behöver ifstream. (Dessutom vill du nog inte jämföra char-fält med "=="; använd strcmp.)

Permalänk
Medlem
Skrivet av Elgot:

Observera att o i ofstream innebär utmatning. Du behöver ifstream. (Dessutom vill du nog inte jämföra char-fält med "=="; använd strcmp.)

okej, jag får titta in lite på strcmp då tackar

Permalänk
Medlem

void Login() { int userID; char password[20]; char Rpassword[20]; string temp; system("CLS"); cout << "UserID: "; cin >> userID; cout << "Password: "; cin >> password; ifstream pass; pass.open("Password.txt"); if (pass.is_open()) { while (getline (pass, temp)) { password = temp; } } else { cout << "Couldnt open password.txt"; exit(EXIT_FAILURE); } if (password == Rpassword) { BankMenu(); } else { system("CLS"); cout << "Wrong password."; Sleep(2000); Login(); } }

Permalänk
Hedersmedlem
Skrivet av linuxe93:

if (password == Rpassword)

Det gäller även här. Det man gör där är inte att kontrollera om password och Rpassword innehåller samma text utan att kontrollera om de har samma startadress (vilket typiskt inte är fallet). Rpassword används för övrigt inte...

Permalänk
Medlem

Jag har suttit och testat och pillat men får inte rätt på det alls.. Man kommer inte in den tar en bara till "fel lösenord". Jag tror det är för svårt för min kompetens inom c++ just nu

Permalänk
Medlem
Skrivet av GHARN:

Jag har suttit och testat och pillat men får inte rätt på det alls.. Man kommer inte in den tar en bara till "fel lösenord". Jag tror det är för svårt för min kompetens inom c++ just nu

Det framgår lite otydligt vad du gjort för att försöka få det att funka utifrån ovanstående kommentarer, men se till så att Rpassword får ett värde. (Rpassword används inte just nu)

Visa signatur

In order to understand recursion, one must first understand recursion

Permalänk
Medlem
Skrivet av pkzlol:

Det framgår lite otydligt vad du gjort för att försöka få det att funka utifrån ovanstående kommentarer, men se till så att Rpassword får ett värde. (Rpassword används inte just nu)

Det jag försöker göra är så att på "registrering" så skapar man ett lösenord. Som läggs in i filen password.txt sedan på "inloggningen" så när man skriver in sitt lösenord så skall programmet leta i filen password.txt och se ifall det matchar med lösenordet som användaren skrev in. Ifall det finns så kommer han in om inte så nekas han. Är det mer tydligt nu?

Permalänk
Medlem
Skrivet av GHARN:

Det jag försöker göra är så att på "registrering" så skapar man ett lösenord. Som läggs in i filen password.txt sedan på "inloggningen" så när man skriver in sitt lösenord så skall programmet leta i filen password.txt och se ifall det matchar med lösenordet som användaren skrev in. Ifall det finns så kommer han in om inte så nekas han. Är det mer tydligt nu?

Var kanske otydligt skrivit av mig själv. Jag förstod vad du ville göra med programmet. Det jag undrade var vad du hade gjort för att försöka få det att fungera. Flera personer har ju skrivit vettiga kommentarer ovanför, och jag får inget intryck av att du har använt hjälpen de gav dig

Visa signatur

In order to understand recursion, one must first understand recursion

Permalänk
Medlem
Skrivet av pkzlol:

Var kanske otydligt skrivit av mig själv. Jag förstod vad du ville göra med programmet. Det jag undrade var vad du hade gjort för att försöka få det att fungera. Flera personer har ju skrivit vettiga kommentarer ovanför, och jag får inget intryck av att du har använt hjälpen de gav dig

Jaha, du menar så Jag har försökt lite med hjälp av dem. Men jag förstår inte riktigt allt. Så jag försöker få mig att förstå det så mycket jag kan

Permalänk
Hedersmedlem
Skrivet av GHARN:

Jaha, du menar så Jag har försökt lite med hjälp av dem. Men jag förstår inte riktigt allt. Så jag försöker få mig att förstå det så mycket jag kan

I Login() får du alltså ändra

ofstream pass;

till

ifstream pass;

,

pass >> password

till

pass >> Rpassword

och

if (password == Rpassword)

till

if (!strcmp(password,Rpassword))

Permalänk
Medlem
Skrivet av Elgot:

I Login() får du alltså ändra

ofstream pass;

till

ifstream pass;

,

pass >> password

till

pass >> Rpassword

och

if (password == Rpassword)

till

if (!strcmp(password,Rpassword))

Jaha, nu förstår jag hur du menar! Tack! Jag förstod det med ofstream/ifstream dock